1# Copyright (C) 2011-2020, Manfred Moitzi 2# License: MIT License 3import sys 4import os 5from .version import version, __version__ 6 7VERSION = __version__ 8__author__ = "mozman <me@mozman.at>" 9 10TRUE_STATE = {'True', 'true', 'On', 'on', '1'} 11PYPY = hasattr(sys, 'pypy_version_info') 12PYPY_ON_WINDOWS = sys.platform.startswith('win') and PYPY 13EZDXF_TEST_FILES = os.getenv('EZDXF_TEST_FILES', '') 14 15# Set EZDXF_AUTO_LOAD_FONTS to "False" to deactivate auto font loading, 16# if this this procedure slows down your startup time and font measuring is not 17# important to you. Fonts can always loaded manually: ezdxf.fonts.load() 18EZDXF_AUTO_LOAD_FONTS = os.getenv('EZDXF_AUTO_LOAD_FONTS', 'True') in TRUE_STATE 19 20# name space imports - do not remove 21from ezdxf.options import options 22from ezdxf.colors import ( 23 int2rgb, rgb2int, transparency2float, float2transparency, 24) 25from ezdxf.lldxf import const 26from ezdxf.lldxf.validator import is_dxf_file, is_dxf_stream 27from ezdxf.filemanagement import readzip, new, read, readfile, decode_base64 28from ezdxf.tools.standards import ( 29 setup_linetypes, setup_styles, 30 setup_dimstyles, setup_dimstyle, 31) 32from ezdxf.tools import pattern, fonts 33from ezdxf.render.arrows import ARROWS 34from ezdxf.lldxf.const import ( 35 DXFError, DXFStructureError, DXFVersionError, DXFTableEntryError, 36 DXFAppDataError, DXFXDataError, DXFAttributeError, DXFValueError, 37 DXFKeyError, DXFIndexError, DXFTypeError, DXFBlockInUseError, 38 InvalidGeoDataException, InsertUnits, 39 ACI, DXF12, DXF2000, DXF2004, DXF2007, DXF2010, DXF2013, DXF2018, 40) 41# name space imports - do not remove 42 43import codecs 44from ezdxf.lldxf.encoding import ( 45 dxf_backslash_replace, has_dxf_unicode, decode_dxf_unicode, 46) 47 48# setup DXF unicode encoder -> '\U+nnnn' 49codecs.register_error('dxfreplace', dxf_backslash_replace) 50 51# Load font support automatically: 52if EZDXF_AUTO_LOAD_FONTS: 53 fonts.load() 54 55YES_NO = {True: 'yes', False: 'no'} 56 57 58def print_config(func=print, verbose=False): 59 from pathlib import Path 60 from ezdxf.acc import USE_C_EXT 61 62 func(f"ezdxf v{__version__} @ {Path(__file__).parent}") 63 func(f"Python version: {sys.version}") 64 func(f"using C-extensions: {YES_NO[USE_C_EXT]}") 65 func(f"using Matplotlib: {YES_NO[options.use_matplotlib]}") 66 if verbose: 67 font_cache_dir = options.font_cache_directory 68 if font_cache_dir is False: 69 font_cache_dir = 'internal' 70 func(f"font cache directory: {font_cache_dir}") 71 func(f"default text style: {options.default_text_style}") 72 func(f"default dimension text style: " 73 f"{options.default_dimension_text_style}") 74 func(f"load proxy graphic: {YES_NO[options.load_proxy_graphics]}") 75 func(f"store proxy graphic: {YES_NO[options.store_proxy_graphics]}") 76 func(f"log unprocessed tags: {YES_NO[options.log_unprocessed_tags]}") 77 func(f"filter invalid XDATA group codes: " 78 f"{YES_NO[options.filter_invalid_xdata_group_codes]}") 79 for v in options.CONFIG_VARS: 80 func(f"{v}={os.environ.get(v, '')}") 81