summaryrefslogtreecommitdiff
path: root/inkstitch.py
diff options
context:
space:
mode:
authorkarnigen <karnigen@gmail.com>2024-01-13 15:42:49 +0100
committerkarnigen <karnigen@gmail.com>2024-01-13 15:42:49 +0100
commit1b1779ee99315d4aa6d5a6852c296d251e52ff00 (patch)
tree436c3ba20b37961eb17c2c32a5bfc950e9c5bbb0 /inkstitch.py
parentbc991aaa250339ea2d1ca96c9d531e39d8027ab7 (diff)
style cleanup
Diffstat (limited to 'inkstitch.py')
-rw-r--r--inkstitch.py75
1 files changed, 26 insertions, 49 deletions
diff --git a/inkstitch.py b/inkstitch.py
index d85eaba4..dde884d7 100644
--- a/inkstitch.py
+++ b/inkstitch.py
@@ -7,8 +7,9 @@ import os
import sys
from pathlib import Path # to work with paths as objects
import configparser # to read DEBUG.ini
+from argparse import ArgumentParser # to parse arguments and remove --extension
-import lib.debug_utils as debug_utils
+import lib.debug_utils as debug_utils
SCRIPTDIR = Path(__file__).parent.absolute()
@@ -16,8 +17,8 @@ running_as_frozen = getattr(sys, 'frozen', None) is not None # check if running
if len(sys.argv) < 2:
# no arguments - prevent accidentally running this script
- msg = "No arguments given, exiting!" # without gettext localization see _()
- if running_as_frozen: # we show dialog only when running from pyinstaller bundle - using wx
+ msg = "No arguments given, exiting!" # without gettext localization see _()
+ if running_as_frozen: # we show dialog only when running from pyinstaller bundle - using wx
try:
import wx
app = wx.App()
@@ -43,68 +44,33 @@ debug_active = bool((gettrace := getattr(sys, 'gettrace')) and gettrace()) # ch
debug_type = 'none'
profiler_type = 'none'
-if not running_as_frozen: # debugging/profiling only in development mode
+if not running_as_frozen: # debugging/profiling only in development mode
# specify debugger type
- # - if script was already started from debugger then don't read debug type from ini file or cmd line
+ # but if script was already started from debugger then don't read debug type from ini file or cmd line
if not debug_active:
- # enable/disable debugger from bash: -d
- if os.environ.get('INKSTITCH_DEBUG_ENABLE', '').lower() in ['true', '1', 'yes', 'y']:
- debug_enable = True
- else:
- debug_enable = ini.getboolean("DEBUG","debug_enable", fallback=False) # enable debugger on startup from ini
-
- debug_type = ini.get("DEBUG","debug_type", fallback="none") # debugger type vscode, pycharm, pydevd
- if not debug_enable:
- debug_type = 'none'
-
- debug_to_file = ini.getboolean("DEBUG","debug_to_file", fallback=False) # write debug output to file
- if debug_to_file and debug_type == 'none':
- debug_type = 'file'
-
- # enbale/disable profiling from bash: -p
- if os.environ.get('INKSTITCH_PROFILE_ENABLE', '').lower() in ['true', '1', 'yes', 'y']:
- profile_enable = True
- else:
- profile_enable = ini.getboolean("PROFILE","profile_enable", fallback=False) # read from ini
+ debug_type = debug_utils.resole_debug_type(ini) # read debug type from ini file or cmd line
- # specify profiler type
- profiler_type = ini.get("PROFILE","profiler_type", fallback="none") # profiler type cprofile, profile, pyinstrument
- if not profile_enable:
- profiler_type = 'none'
+ profile_type = debug_utils.resole_profile_type(ini) # read profile type from ini file or cmd line
if running_from_inkscape:
# process creation of the Bash script - should be done before sys.path is modified, see below in prefere_pip_inkex
- if ini.getboolean("DEBUG","create_bash_script", fallback=False): # create script only if enabled in DEBUG.ini
+ if ini.getboolean("DEBUG", "create_bash_script", fallback=False): # create script only if enabled in DEBUG.ini
debug_utils.write_offline_debug_script(SCRIPTDIR, ini)
-
+
# disable debugger when running from inkscape
- disable_from_inkscape = ini.getboolean("DEBUG","disable_from_inkscape", fallback=False)
+ disable_from_inkscape = ini.getboolean("DEBUG", "disable_from_inkscape", fallback=False)
if disable_from_inkscape:
debug_type = 'none' # do not start debugger when running from inkscape
# prefer pip installed inkex over inkscape bundled inkex, pip version is bundled with Inkstitch
# - must be be done before importing inkex
- prefere_pip_inkex = ini.getboolean("LIBRARY","prefer_pip_inkex", fallback=True)
+ prefere_pip_inkex = ini.getboolean("LIBRARY", "prefer_pip_inkex", fallback=True)
if prefere_pip_inkex and 'PYTHONPATH' in os.environ:
debug_utils.reorder_sys_path()
-from argparse import ArgumentParser # to parse arguments and remove --extension
-import logging # to set logger for shapely
-from io import StringIO # to store shapely errors
-
-from lib.exceptions import InkstitchException, format_uncaught_exception
-
-from inkex import errormsg # to show error message in inkscape
-from lxml.etree import XMLSyntaxError # to catch XMLSyntaxError from inkex
-
-from lib.debug import debug # import global variable debug - don't import whole module
-
-from lib import extensions # import all supported extensions of institch
-from lib.i18n import _ # see gettext translation function _()
-from lib.utils import restore_stderr, save_stderr # to hide GTK spam
-
# enabling of debug depends on value of debug_type in DEBUG.ini file
if debug_type != 'none':
+ from lib.debug import debug # import global variable debug - don't import whole module
debug.enable(debug_type, SCRIPTDIR, ini)
# check if debugger is really activated
debug_active = bool((gettrace := getattr(sys, 'gettrace')) and gettrace())
@@ -117,8 +83,9 @@ if running_as_frozen or not debug_active:
# TODO - check if this is still needed for shapely, apparently shapely now uses only exceptions instead of io.
# all logs were removed from version 2.0.0 and above
-
# ---- plan to remove this in future ----
+# import logging # to set logger for shapely
+# from io import StringIO # to store shapely errors
# set logger for shapely - for old versions of shapely
# logger = logging.getLogger('shapely.geos') # attach logger of shapely
# logger.setLevel(logging.DEBUG)
@@ -132,6 +99,10 @@ if running_as_frozen or not debug_active:
# pop '--extension' from arguments and generate extension class name from extension name
# example: --extension=params will instantiate Params() class from lib.extensions.
+
+# we need to import only after possible modification of sys.path, we disable here flake8 E402
+from lib import extensions # noqa: E402 # import all supported extensions of institch
+
parser = ArgumentParser()
parser.add_argument("--extension")
my_args, remaining_args = parser.parse_known_args()
@@ -154,7 +125,13 @@ if debug_active or profiler_type != "none": # if debug or profile mode
debug_utils.profile(profiler_type, SCRIPTDIR, ini, extension, remaining_args)
else: # if not debug nor profile mode
- save_stderr() # hide GTK spam
+ from lib.exceptions import InkstitchException, format_uncaught_exception
+ from inkex import errormsg # to show error message in inkscape
+ from lxml.etree import XMLSyntaxError # to catch XMLSyntaxError from inkex
+ from lib.i18n import _ # see gettext translation function _()
+ from lib.utils import restore_stderr, save_stderr # to hide GTK spam
+
+ save_stderr() # hide GTK spam
exception = None
try:
extension.run(args=remaining_args)