Unverified Commit 979599f0 authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

inkscape-extensions.inkstitch: 3.1.0 -> 3.2.2 (#432955)

parents c8d9c5ad 6784df30
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
From af541a4f8ddda287f74687327e4ed89b79557777 Mon Sep 17 00:00:00 2001
From 64f735a58d3e5cc2344f823e73602eab638d7076 Mon Sep 17 00:00:00 2001
From: tropf <tropf@noreply.codeberg.org>
Date: Mon, 5 Aug 2024 21:25:33 +0200
Subject: [PATCH 1/3] force frozen=true
Subject: [PATCH 1/4] force frozen=true

Enforce installation in frozen mode, i.e. as a packaged version where
source can not be modified.
@@ -10,7 +10,7 @@ source can not be modified.
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/inkstitch.py b/inkstitch.py
index 50f33d19..398465ca 100644
index efe6f6dec..be8ddf665 100644
--- a/inkstitch.py
+++ b/inkstitch.py
@@ -40,7 +40,7 @@ else:
@@ -23,5 +23,5 @@ index 50f33d19..398465ca 100644
 if not running_as_frozen:  # override running_as_frozen from DEBUG.toml - for testing
     if safe_get(ini, "DEBUG", "force_frozen", default=False):
-- 
2.36.0
2.49.0
+4 −4
Original line number Diff line number Diff line
From a86412c57833c24743214c9d3abb76093365769f Mon Sep 17 00:00:00 2001
From c15715af2cfca6603241f4d414b68d43bd4acb98 Mon Sep 17 00:00:00 2001
From: tropf <tropf@noreply.codeberg.org>
Date: Mon, 5 Aug 2024 21:26:13 +0200
Subject: [PATCH 2/3] plugin invocation: use python script as entrypoint
Subject: [PATCH 2/4] plugin invocation: use python script as entrypoint

Ink/Stitch is invoked by calling a script with command line parameters.
Depending on the distribution format, this is bundled into a standalone
@@ -17,7 +17,7 @@ intent of only using the else path.
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/inx/utils.py b/lib/inx/utils.py
index 9168f2a2..00313639 100755
index c4cbf6f0d..6d4774ec0 100755
--- a/lib/inx/utils.py
+++ b/lib/inx/utils.py
@@ -21,7 +21,7 @@ def build_environment():
@@ -30,5 +30,5 @@ index 9168f2a2..00313639 100755
         # Command tag and icons path
         if sys.platform == "win32":
-- 
2.36.0
2.49.0
+490 −0
Original line number Diff line number Diff line
From 87d64cbc61175a2adebd4563ac833562a4729295 Mon Sep 17 00:00:00 2001
From: tropf <tropf@noreply.codeberg.org>
Date: Fri, 16 May 2025 23:28:21 +0200
Subject: [PATCH 3/4] lazy-load module to access global_settings

The access to global_settings triggers a read to the home directory on
module inclusion. During the nix build process, this home does not
exist, and hence fails, crashing the entire build.

The inclusion is moved into the function calls, such that it is only
loaded at runtime (where a home should be available), but not at build
time.

The performance impact is considered negligible, as the loads are called
every invocation, but will mostly hit the cache.

Note to self: If this patch is missing, the cache module import will be
the first to trigger the read. This import can be left untouched, as the
underlying cause is defused by this patch.
---
 lib/gui/apply_palette.py                           | 3 ++-
 lib/gui/edit_json/main_panel.py                    | 3 ++-
 lib/gui/lettering/main_panel.py                    | 6 +++++-
 lib/gui/lettering_font_sample.py                   | 4 +++-
 lib/gui/preferences.py                             | 3 ++-
 lib/gui/simulator/control_panel.py                 | 4 +++-
 lib/gui/simulator/drawing_panel.py                 | 6 +++++-
 lib/gui/simulator/simulator_preferences.py         | 5 ++++-
 lib/gui/simulator/split_simulator_window.py        | 4 +++-
 lib/gui/simulator/view_panel.py                    | 6 +++++-
 lib/metadata.py                                    | 3 +--
 lib/sew_stack/stitch_layers/stitch_layer_editor.py | 3 ++-
 lib/utils/cache.py                                 | 6 +++---
 13 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/lib/gui/apply_palette.py b/lib/gui/apply_palette.py
index 6bc771914..df647d082 100644
--- a/lib/gui/apply_palette.py
+++ b/lib/gui/apply_palette.py
@@ -8,12 +8,12 @@ import wx.adv
 
 from ..i18n import _
 from ..threads import ThreadCatalog
-from ..utils.settings import global_settings
 
 
 class ApplyPaletteFrame(wx.Frame):
 
     def __init__(self, title, **kwargs):
+        from ..utils.settings import global_settings
         super().__init__(None, title=title)
 
         self.SetWindowStyle(wx.FRAME_FLOAT_ON_PARENT | wx.DEFAULT_FRAME_STYLE)
@@ -99,6 +99,7 @@ class ApplyPaletteApp(wx.App):
         app.MainLoop()
 
     def set_palette(self):
+        from ..utils.settings import global_settings
         if self.frame.palette_list.GetSelection() == -1:
             return
         self.palette = self.frame.palette_list.GetString(self.frame.palette_list.GetSelection())
diff --git a/lib/gui/edit_json/main_panel.py b/lib/gui/edit_json/main_panel.py
index bd43f523b..5eb9d4cc9 100644
--- a/lib/gui/edit_json/main_panel.py
+++ b/lib/gui/edit_json/main_panel.py
@@ -22,7 +22,6 @@ from ...lettering.categories import FONT_CATEGORIES
 from ...lettering.font_variant import FontVariant
 from ...stitch_plan import stitch_groups_to_stitch_plan
 from ...svg.tags import SVG_PATH_TAG
-from ...utils.settings import global_settings
 from ...utils.threading import ExitThread, check_stop_flag
 from .. import PreviewRenderer, WarningPanel
 from . import HelpPanel, SettingsPanel
@@ -33,6 +32,7 @@ LETTER_CASE = {0: '', 1: 'upper', 2: 'lower'}
 class LetteringEditJsonPanel(wx.Panel):
 
     def __init__(self, parent, simulator, layer, metadata=None, background_color='white'):
+        from ...utils.settings import global_settings
         self.parent = parent
         self.simulator = simulator
         self.layer = layer
@@ -251,6 +251,7 @@ class LetteringEditJsonPanel(wx.Panel):
         return glyph
 
     def on_font_changed(self, event=None):
+        from ...utils.settings import global_settings
         selected_font = self.settings_panel.font_chooser.GetValue()
         if selected_font:
             self.font = self.fonts[selected_font]
diff --git a/lib/gui/lettering/main_panel.py b/lib/gui/lettering/main_panel.py
index 64312b5a1..5ed11b247 100644
--- a/lib/gui/lettering/main_panel.py
+++ b/lib/gui/lettering/main_panel.py
@@ -17,7 +17,6 @@ from ...lettering.categories import FONT_CATEGORIES
 from ...stitch_plan import stitch_groups_to_stitch_plan
 from ...svg.tags import INKSTITCH_LETTERING
 from ...utils import DotDict, cache
-from ...utils.settings import global_settings
 from ...utils.threading import ExitThread, check_stop_flag
 from .. import PresetsPanel, PreviewRenderer, info_dialog
 from . import LetteringHelpPanel, LetteringOptionsPanel
@@ -73,6 +72,7 @@ class LetteringPanel(wx.Panel):
 
     def load_settings(self):
         """Load the settings saved into the SVG group element"""
+        from ...utils.settings import global_settings
 
         self.settings = DotDict({
             "text": "",
@@ -184,12 +184,14 @@ class LetteringPanel(wx.Panel):
 
     @property
     def default_font(self):
+        from ...utils.settings import global_settings
         try:
             return self.fonts[global_settings['last_font']]
         except KeyError:
             return list(self.fonts.values())[0]
 
     def on_change(self, attribute, event):
+        from ...utils.settings import global_settings
         value = event.GetEventObject().GetValue()
         self.settings[attribute] = value
         if attribute == "text" and self.options_panel.font_glyph_filter.GetValue() is True:
@@ -206,6 +208,7 @@ class LetteringPanel(wx.Panel):
         self.update_preview()
 
     def on_choice_change(self, attribute, event=None):
+        from ...utils.settings import global_settings
         value = event.GetEventObject().GetCurrentSelection()
         self.settings[attribute] = value
         if attribute == 'trim_option':
@@ -215,6 +218,7 @@ class LetteringPanel(wx.Panel):
         self.update_preview()
 
     def on_font_changed(self, event=None):
+        from ...utils.settings import global_settings
         font = self.fonts.get(self.options_panel.font_chooser.GetValue(), self.default_font)
         self.settings.font = font.marked_custom_font_id
         global_settings['last_font'] = font.marked_custom_font_name
diff --git a/lib/gui/lettering_font_sample.py b/lib/gui/lettering_font_sample.py
index e19544dce..c2f7fcaaa 100644
--- a/lib/gui/lettering_font_sample.py
+++ b/lib/gui/lettering_font_sample.py
@@ -13,12 +13,12 @@ from ..commands import ensure_command_symbols
 from ..i18n import _
 from ..lettering import get_font_list
 from ..marker import ensure_marker_symbols
-from ..utils.settings import global_settings
 
 
 class FontSampleFrame(wx.Frame):
 
     def __init__(self, *args, **kwargs):
+        from ..utils.settings import global_settings
         self.layer = kwargs.pop("layer")
         wx.Frame.__init__(self, None, wx.ID_ANY, _("Font Sampling"), *args, **kwargs)
 
@@ -135,6 +135,7 @@ class FontSampleFrame(wx.Frame):
                 self.font_chooser.Append(font.marked_custom_font_name)
 
     def on_font_changed(self, event=None):
+        from ..utils.settings import global_settings
         selected_font = self.font_chooser.GetValue()
         if selected_font:
             self.font = self.fonts[selected_font]
@@ -157,6 +158,7 @@ class FontSampleFrame(wx.Frame):
             self.color_sort_checkbox.Disable()
 
     def apply(self, event):
+        from ..utils.settings import global_settings
         # apply scale to layer and extract for later use
         self.layer.transform.add_scale(self.scale_spinner.GetValue() / 100)
         scale = self.layer.transform.a
diff --git a/lib/gui/preferences.py b/lib/gui/preferences.py
index 23dbbf0c6..13684acb9 100644
--- a/lib/gui/preferences.py
+++ b/lib/gui/preferences.py
@@ -7,11 +7,11 @@ import wx
 
 from ..i18n import _
 from ..utils.cache import get_stitch_plan_cache
-from ..utils.settings import global_settings
 
 
 class PreferencesFrame(wx.Frame):
     def __init__(self, *args, **kwargs):
+        from ..utils.settings import global_settings
         self.extension = kwargs.pop("extension")
         wx.Frame.__init__(self, None, wx.ID_ANY, _("Preferences"), *args, **kwargs)
         self.SetTitle(_("Preferences"))
@@ -180,6 +180,7 @@ class PreferencesFrame(wx.Frame):
         stitch_plan_cache.clear(retry=True)
 
     def apply(self):
+        from ..utils.settings import global_settings
         metadata = self.extension.get_inkstitch_metadata()
         metadata['min_stitch_len_mm'] = self.minimum_stitch_length.GetValue()
         metadata['collapse_len_mm'] = self.minimum_jump_stitch_length.GetValue()
diff --git a/lib/gui/simulator/control_panel.py b/lib/gui/simulator/control_panel.py
index 99d1f92ba..1bd9e1872 100644
--- a/lib/gui/simulator/control_panel.py
+++ b/lib/gui/simulator/control_panel.py
@@ -11,7 +11,6 @@ from wx.lib.intctrl import IntCtrl
 from ...debug.debug import debug
 from ...i18n import _
 from ...utils import get_resource_dir
-from ...utils.settings import global_settings
 from . import SimulatorSlider
 
 
@@ -21,6 +20,7 @@ class ControlPanel(wx.Panel):
     @debug.time
     def __init__(self, parent, *args, **kwargs):
         """"""
+        from ...utils.settings import global_settings
         self.parent = parent
         self.stitch_plan = kwargs.pop('stitch_plan', None)
         self.detach_callback = kwargs.pop('detach_callback', None)
@@ -204,6 +204,7 @@ class ControlPanel(wx.Panel):
         return icon.ConvertToBitmap()
 
     def choose_speed(self):
+        from ...utils.settings import global_settings
         if not global_settings['simulator_adaptive_speed']:
             self.set_speed(global_settings['simulator_speed'])
             return
@@ -233,6 +234,7 @@ class ControlPanel(wx.Panel):
             self.animation_reverse()
 
     def set_speed(self, speed):
+        from ...utils.settings import global_settings
         global_settings['simulator_speed'] = speed
         self.speed = int(max(speed, 1))
         self.update_speed_text()
diff --git a/lib/gui/simulator/drawing_panel.py b/lib/gui/simulator/drawing_panel.py
index abe6fa0fb..036a7b2a6 100644
--- a/lib/gui/simulator/drawing_panel.py
+++ b/lib/gui/simulator/drawing_panel.py
@@ -11,7 +11,6 @@ from numpy import split
 from ...debug.debug import debug
 from ...i18n import _
 from ...svg import PIXELS_PER_MM
-from ...utils.settings import global_settings
 
 # L10N command label at bottom of simulator window
 COMMAND_NAMES = [_("STITCH"), _("JUMP"), _("TRIM"), _("STOP"), _("COLOR CHANGE")]
@@ -37,6 +36,7 @@ class DrawingPanel(wx.Panel):
 
     def __init__(self, parent, *args, **kwargs):
         """"""
+        from ...utils.settings import global_settings
         self.parent = parent
         self.stitch_plan = kwargs.pop('stitch_plan', None)
         kwargs['style'] = wx.BORDER_SUNKEN
@@ -269,6 +269,7 @@ class DrawingPanel(wx.Panel):
                     canvas.StrokeLines(block)
 
     def draw_needle_penetration_points(self, canvas, pen, stitches):
+        from ...utils.settings import global_settings
         if self.view_panel.btnNpp.GetValue():
             npp_size = global_settings['simulator_npp_size'] * PIXELS_PER_MM * self.PIXEL_DENSITY
             npp_pen = wx.Pen(pen.GetColour(), width=int(npp_size))
@@ -364,11 +365,13 @@ class DrawingPanel(wx.Panel):
                 pass
 
     def color_to_pen(self, color):
+        from ...utils.settings import global_settings
         line_width = global_settings['simulator_line_width'] * PIXELS_PER_MM * self.PIXEL_DENSITY
         background_color = self.GetBackgroundColour().GetAsString()
         return wx.Pen(list(map(int, color.visible_on_background(background_color).rgb)), int(line_width))
 
     def update_pen_size(self):
+        from ...utils.settings import global_settings
         line_width = global_settings['simulator_line_width'] * PIXELS_PER_MM * self.PIXEL_DENSITY
         for pen in self.pens:
             pen.SetWidth(int(line_width))
@@ -421,6 +424,7 @@ class DrawingPanel(wx.Panel):
                 self.jumps.append(jumps)
 
     def set_speed(self, speed):
+        from ...utils.settings import global_settings
         self.speed = speed
         global_settings['simulator_speed'] = speed
 
diff --git a/lib/gui/simulator/simulator_preferences.py b/lib/gui/simulator/simulator_preferences.py
index 7b72b87de..bfebc7cbe 100644
--- a/lib/gui/simulator/simulator_preferences.py
+++ b/lib/gui/simulator/simulator_preferences.py
@@ -6,7 +6,6 @@
 import wx
 
 from ...i18n import _
-from ...utils.settings import global_settings
 
 
 class SimulatorPreferenceDialog(wx.Dialog):
@@ -14,6 +13,7 @@ class SimulatorPreferenceDialog(wx.Dialog):
     """
 
     def __init__(self, *args, **kwargs):
+        from ...utils.settings import global_settings
         super(SimulatorPreferenceDialog, self).__init__(*args, **kwargs)
         self.SetWindowStyle(wx.FRAME_FLOAT_ON_PARENT | wx.DEFAULT_FRAME_STYLE)
 
@@ -62,18 +62,21 @@ class SimulatorPreferenceDialog(wx.Dialog):
         self.SetSizerAndFit(sizer)
 
     def on_change(self, attribute, event):
+        from ...utils.settings import global_settings
         global_settings[attribute] = event.EventObject.GetValue()
         if self.drawing_panel.loaded and attribute == 'simulator_line_width':
             self.drawing_panel.update_pen_size()
         self.drawing_panel.Refresh()
 
     def on_adaptive_speed_changed(self, event=None):
+        from ...utils.settings import global_settings
         adaptive_speed = self.adaptive_speed.GetValue()
         global_settings['simulator_adaptive_speed'] = adaptive_speed
         self.control_panel.choose_speed()
         self.control_panel.Refresh()
 
     def save_settings(self):
+        from ...utils.settings import global_settings
         global_settings['simulator_line_width'] = self.line_width.GetValue()
         global_settings['simulator_npp_size'] = self.npp_size.GetValue()
 
diff --git a/lib/gui/simulator/split_simulator_window.py b/lib/gui/simulator/split_simulator_window.py
index e4b2803e2..6513b6d3d 100644
--- a/lib/gui/simulator/split_simulator_window.py
+++ b/lib/gui/simulator/split_simulator_window.py
@@ -8,12 +8,12 @@ import wx
 
 from ...debug.debug import debug
 from ...utils import get_resource_dir
-from ...utils.settings import global_settings
 from . import SimulatorPanel, SimulatorWindow
 
 
 class SplitSimulatorWindow(wx.Frame):
     def __init__(self, panel_class, title, target_duration=None, **kwargs):
+        from ...utils.settings import global_settings
         super().__init__(None, title=title)
 
         self.SetWindowStyle(wx.FRAME_FLOAT_ON_PARENT | wx.DEFAULT_FRAME_STYLE)
@@ -89,6 +89,7 @@ class SplitSimulatorWindow(wx.Frame):
             self.detach_simulator()
 
     def attach_simulator(self):
+        from ...utils.settings import global_settings
         self.detached_simulator_frame.detach_simulator_panel()
         self.simulator_panel.Reparent(self.splitter)
         self.splitter.SplitVertically(self.settings_panel, self.simulator_panel)
@@ -105,6 +106,7 @@ class SplitSimulatorWindow(wx.Frame):
         global_settings['pop_out_simulator'] = False
 
     def detach_simulator(self):
+        from ...utils.settings import global_settings
         self.splitter.Unsplit()
         self.detached_simulator_frame = SimulatorWindow(panel=self.simulator_panel, parent=self)
         self.splitter.SetMinimumPaneSize(100)
diff --git a/lib/gui/simulator/view_panel.py b/lib/gui/simulator/view_panel.py
index e2f2618d8..abbbc49d4 100644
--- a/lib/gui/simulator/view_panel.py
+++ b/lib/gui/simulator/view_panel.py
@@ -9,7 +9,6 @@ from ...debug.debug import debug
 from ...i18n import _
 from . import SimulatorPreferenceDialog
 from . import DesignInfoDialog
-from ...utils.settings import global_settings
 
 
 class ViewPanel(ScrolledPanel):
@@ -18,6 +17,7 @@ class ViewPanel(ScrolledPanel):
     @debug.time
     def __init__(self, parent, detach_callback):
         """"""
+        from ...utils.settings import global_settings
         self.parent = parent
         self.detach_callback = detach_callback
         ScrolledPanel.__init__(self, parent)
@@ -159,14 +159,17 @@ class ViewPanel(ScrolledPanel):
         self.toggle_npp(event)
 
     def toggle_npp(self, event):
+        from ...utils.settings import global_settings
         self.drawing_panel.Refresh()
         global_settings['npp_button_status'] = self.btnNpp.GetValue()
 
     def on_cursor_button(self, event):
+        from ...utils.settings import global_settings
         self.drawing_panel.Refresh()
         global_settings['display_crosshair'] = self.btnCursor.GetValue()
 
     def toggle_page(self, event):
+        from ...utils.settings import global_settings
         debug.log("toggle page")
         value = self.btnPage.GetValue()
         self.drawing_panel.set_show_page(value)
@@ -174,6 +177,7 @@ class ViewPanel(ScrolledPanel):
         global_settings['toggle_page_button_status'] = value
 
     def on_marker_button(self, marker_type, event):
+        from ...utils.settings import global_settings
         value = event.GetEventObject().GetValue()
         self.control_panel.slider.enable_marker_list(marker_type, value)
         if marker_type == 'jump':
diff --git a/lib/metadata.py b/lib/metadata.py
index 837fbf008..0beaeeb7a 100644
--- a/lib/metadata.py
+++ b/lib/metadata.py
@@ -5,8 +5,6 @@ from collections.abc import MutableMapping
 import inkex
 from lxml import etree
 
-from .utils.settings import DEFAULT_METADATA, global_settings
-
 
 def strip_namespace(tag):
     """Remove xml namespace from a tag name.
@@ -33,6 +31,7 @@ class InkStitchMetadata(MutableMapping):
     """
 
     def __init__(self, document):
+        from .utils.settings import DEFAULT_METADATA, global_settings
         super().__init__()
         self.document = document
         self.metadata = document.metadata
diff --git a/lib/sew_stack/stitch_layers/stitch_layer_editor.py b/lib/sew_stack/stitch_layers/stitch_layer_editor.py
index eddf78675..4a5dfcf40 100644
--- a/lib/sew_stack/stitch_layers/stitch_layer_editor.py
+++ b/lib/sew_stack/stitch_layers/stitch_layer_editor.py
@@ -7,7 +7,6 @@ import wx.propgrid
 from ...debug.debug import debug
 from ...gui.windows import SimpleBox
 from ...i18n import _
-from ...utils.settings import global_settings
 
 
 class CheckBoxProperty(wx.propgrid.BoolProperty):
@@ -311,6 +310,7 @@ class StitchLayerEditor:
             return any(property.HasFlag(wx.propgrid.PG_PROP_MODIFIED) for property in self.property_grid.Items)
 
     def get_panel(self, parent):
+        from ...utils.settings import global_settings
         if self.property_grid_panel is None:
             self.layer_editor_panel = wx.Panel(parent, wx.ID_ANY)
 
@@ -426,6 +426,7 @@ class StitchLayerEditor:
                 self.property_grid.RefreshEditor()
 
     def on_sash_position_changed(self, event):
+        from ...utils.settings import global_settings
         global_settings['stitch_layer_editor_sash_position'] = event.GetSashPosition()
 
     def show_help(self, property):
diff --git a/lib/utils/cache.py b/lib/utils/cache.py
index cca6296a9..6ecdf6403 100644
--- a/lib/utils/cache.py
+++ b/lib/utils/cache.py
@@ -10,9 +10,6 @@ import sqlite3
 
 import diskcache  # type: ignore[import-untyped]
 
-from lib.utils.settings import global_settings
-
-from .paths import get_user_dir
 from functools import lru_cache
 
 
@@ -25,6 +22,8 @@ __stitch_plan_cache = None
 
 
 def get_stitch_plan_cache():
+    from .paths import get_user_dir
+    from lib.utils.settings import global_settings
     global __stitch_plan_cache
 
     if __stitch_plan_cache is None:
@@ -51,6 +50,7 @@ def get_stitch_plan_cache():
 
 
 def is_cache_disabled():
+    from lib.utils.settings import global_settings
     return not global_settings['cache_size']
 
 
-- 
2.49.0
+31 −0
Original line number Diff line number Diff line
From 99c895045df01e291c6c9dc89b7a1c758e010bda Mon Sep 17 00:00:00 2001
From: tropf <tropf@noreply.codeberg.org>
Date: Sat, 26 Oct 2024 14:07:17 +0200
Subject: [PATCH 4/4] enable force-insertion of python path

As of now, the inkex library loaded by inkstitch must be fixed. The
version supplied by inkscape is not sufficient. This should be fixed
with inkscape 1.4, where this patch can be removed.

The fixed path is injected through an environment variable at runtime.
---
 inkstitch.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/inkstitch.py b/inkstitch.py
index be8ddf665..d7a8fca2f 100644
--- a/inkstitch.py
+++ b/inkstitch.py
@@ -105,6 +105,9 @@ if not running_as_frozen:  # debugging/profiling only in development mode
     if prefer_pip_inkex and 'PYTHONPATH' in os.environ:
         debug_utils.reorder_sys_path()
 
+if "PYTHON_INKEX_PATH" in os.environ:
+    sys.path = [os.environ["PYTHON_INKEX_PATH"]] + sys.path
+
 # enabling of debug depends on value of debug_type in DEBUG.toml file
 if debug_type != 'none':
     from lib.debug.debugger import init_debugger
-- 
2.49.0
+37 −5
Original line number Diff line number Diff line
@@ -2,25 +2,47 @@
  lib,
  python3,
  fetchFromGitHub,
  fetchFromGitLab,
  gettext,
}:
let
  version = "3.1.0";
  # on update check compatibility to nixpkgs inkex
  version = "3.2.2";

  # remove and use nixpkgs version is recent enough
  inkex' = python3.pkgs.inkex.overrideAttrs (old: rec {
    # this is no special commit, just the most recent as of writing
    version = "3150a5b3b06f7e4c2104d9e8eb6dc448982bb2b0";
    src = fetchFromGitLab {
      owner = "inkscape";
      repo = "extensions";
      rev = "${version}";
      hash = "sha256-FYBZ66ERC3nVYCaAmFPqKnBxDOKAoQwT14C0fKLn10c=";
    };

    postPatch = ''
      substituteInPlace pyproject.toml \
        --replace-fail 'scour = "^0.37"' 'scour = ">=0.37"'
    '';
  });

  dependencies =
    with python3.pkgs;
    [
      pyembroidery
      inkex
      # inkex upstream release & nixpkgs is too old
      # use nixpkgs inkex once up to date
      inkex'
      wxpython
      networkx
      platformdirs
      shapely
      lxml
      appdirs
      numpy
      jinja2
      requests
      # Upstream wants colormath2 yet still refers to it as colormath. Curious.
      colormath
      colormath2
      flask
      fonttools
      trimesh
@@ -41,7 +63,7 @@ python3.pkgs.buildPythonApplication {
    owner = "inkstitch";
    repo = "inkstitch";
    tag = "v${version}";
    hash = "sha256-CGhJsDRhElgemNv2BXqZr6Vi5EyBArFak7Duz545ivY=";
    hash = "sha256-6EVfjmTXEYgZta01amK8E6t5h2JBPfGGNnqfBG8LQfo=";
  };

  nativeBuildInputs = [
@@ -70,8 +92,12 @@ python3.pkgs.buildPythonApplication {
  patches = [
    ./0001-force-frozen-true.patch
    ./0002-plugin-invocation-use-python-script-as-entrypoint.patch
    ./0003-lazy-load-module-to-access-global_settings.patch
    ./0004-enable-force-insertion-of-python-path.patch
  ];

  doCheck = false;

  postPatch = ''
    # Add shebang with python dependencies
    substituteInPlace lib/inx/utils.py --replace-fail ' interpreter="python"' ""
@@ -79,6 +105,12 @@ python3.pkgs.buildPythonApplication {
    chmod a+x inkstitch.py
  '';

  postInstall = ''
    export SITE_PACKAGES=$(find "${pyEnv}" -type d -name 'site-packages')
    wrapProgram $out/share/inkscape/extensions/inkstitch/inkstitch.py \
      --set PYTHON_INKEX_PATH "$SITE_PACKAGES"
  '';

  nativeCheckInputs = with python3.pkgs; [
    pytestCheckHook
  ];
Loading