Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Try OCP 7.8.1 #1589

Merged
merged 18 commits into from
Jan 18, 2025
Merged

Try OCP 7.8.1 #1589

merged 18 commits into from
Jan 18, 2025

Conversation

adam-urbanczyk
Copy link
Member

@adam-urbanczyk adam-urbanczyk commented May 20, 2024

  • Fix hashing
  • Fix vis mypy issues -> it seems that vtk 9.3 introduced stubs that are not fully correct

@adam-urbanczyk adam-urbanczyk marked this pull request as draft May 20, 2024 14:44
@adam-urbanczyk adam-urbanczyk added this to the 2.6 milestone Dec 15, 2024
@adam-urbanczyk
Copy link
Member Author

CC @jmwright

@adam-urbanczyk
Copy link
Member Author

Note to self: I cannot reproduce the crash locally with a manually fixed version of OCP

adam-urbanczyk referenced this pull request in CadQuery/pywrap Jan 2, 2025
@bernhard-42
Copy link
Contributor

I have OCP 7.8.1 successfully finishing all cadquery and build123d tests: https://github.com/bernhard-42/repackage-ocp/actions/runs/12619194289

I had random crashes in the exports tests before and analysed them. It all boiled down to lines failing that used an iterator on some OCCT objects. The culprit is the definition __iter__ in register_template_NCollection_*. py::make_iterator doesn't seem to handle lifetime of C++ objects correctly.
So I think it is not about the OCP implementation of __iter__, but an internal pybind11 problem, a bit like issue 3776 of pybind11 (or the ones being referenced).
I tried to use the newest pybind11 - which actually works with OCP - but the seg faults persisted.

So I decided to bypass the issue by replacing the 2 iterator uses in cadquery and the 3 in build123d by "standard" OCCT loops (using __call__ instead of __iter__). My patch of the latest cadquery master is:

diff --git a/cadquery/occ_impl/exporters/dxf.py b/cadquery/occ_impl/exporters/dxf.py
index 7a71173..296c442 100644
--- a/cadquery/occ_impl/exporters/dxf.py
+++ b/cadquery/occ_impl/exporters/dxf.py
@@ -343,8 +343,20 @@ class DxfDocument:
         spline.Transform(adaptor.Trsf())
 
         order = spline.Degree() + 1
-        knots = list(spline.KnotSequence())
-        poles = [(p.X(), p.Y(), p.Z()) for p in spline.Poles()]
+        
+        # knots = list(spline.KnotSequence())
+        knots = []
+        for i in range(1, spline.NbKnots() + 1):
+            knot = spline.Knot(i)
+            for j in range(spline.Multiplicity(i)):
+                knots.append(knot)
+
+        # poles = [(p.X(), p.Y(), p.Z()) for p in spline.Poles()]
+        poles = []
+        for i in range(1, spline.NbPoles() + 1):
+            p = spline.Pole(i)
+            poles.append((p.X(), p.Y(), p.Z()))
+
         weights = (
             [spline.Weight(i) for i in range(1, spline.NbPoles() + 1)]
             if spline.IsRational()
diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py
index cedc480..dfa75bd 100644
--- a/cadquery/occ_impl/shapes.py
+++ b/cadquery/occ_impl/shapes.py
@@ -596,7 +596,7 @@ class Shape(object):
         Returns a hashed value denoting this shape. It is computed from the
         TShape and the Location. The Orientation is not used.
         """
-        return self.wrapped.HashCode(HASH_CODE_MAX)
+        return hash(self.wrapped)
 
     def isNull(self) -> bool:
         """
diff --git a/setup.py b/setup.py
index 9ad7b6b..16c700c 100644
--- a/setup.py
+++ b/setup.py
@@ -26,7 +26,7 @@ is_conda = "CONDA_PREFIX" in os.environ
 # Only include the installation dependencies if we are not running on RTD or AppVeyor or in a conda env
 if not is_rtd and not is_appveyor and not is_azure and not is_conda:
     reqs = [
-        "cadquery-ocp>=7.7.0,<7.8",
+        "cadquery-ocp>=7.8.0,<7.9",
         "ezdxf",
         "multimethod>=1.11,<2.0",
         "nlopt>=2.9.0,<3.0",

Pretty straightforward:

  • Replace the two iterators (__iter__) with standard loops (__call__).
  • Change hash behaviour
  • Allow OCP 7.8.1

This patch applied to cadquery master allowed all tests on all 4 platforms to run successfully, see for example https://github.com/bernhard-42/repackage-ocp/actions/runs/12619194289/job/35163428655

The patch might not be the solution (having the iterator would be nice), but I thought it could be helpful to share my analysis and results to help progressing this issue.

@bernhard-42
Copy link
Contributor

btw. for my builds I checkout commit 6cbeb64e9 of pywrap to avoid the regression I mentioned the other day

@adam-urbanczyk
Copy link
Member Author

Thanks, I think I have a manual solution for __iter__ but I need to figure out how to apply it with pywrap (or how to change pywrap to be able to apply it).

@CadQuery CadQuery unlocked this conversation Jan 7, 2025
@adam-urbanczyk
Copy link
Member Author

@bernhard-42 @jmwright things mostly work now. If you are still interested, you could start testing.

@bernhard-42
Copy link
Contributor

I tried my pipelines on github runners:

  • For Intel Mac, arm64 Mac and Ubuntu with Python 3.10-3.12 all tests (cadquery and build123d) were successful.
  • Windows is successful for Python 3.11 (for the other Python versions my pipeline is broken - independent of OCP)
  • For Python 3.13, again, something in my pipeline is wrong (independent of OCP)

So, looks good up to now, but a few test systems are missing due to broken pipelines.

@bernhard-42
Copy link
Contributor

fyi, my Pipeline now works.
I can build OCP 7.8.1.0 wheels for

  • Python 3.10, 3.11, 3.12, 3.13
    (for 3.13 I create my own cadquery_vtk package since vtk==9.3.1 is not on pypi for Python 3.13)
  • MacOS Intel (macos-13), MacOS arm64 (macos-14), Linux (ubuntu-20.04) and Windows (windows-2019)
  • with vtk (as cadquery_ocp) and without vtk (as cadquery_ocp_novtk)

For build123d all tests ran successfully for cadquery_ocp and cadquery_ocp_novtk (after patching VTK part out of it)

For cadquery all tests ran successfully for cadquery_ocp. However:

  • nlopt 2.9.0 does not exist for MacOS Intel on pypi => my tests install it from conda in this case
  • nlopt 2.9.0 and casadi both taken from pypi lead to a seg fault on Windows => my tests install it from conda in this case

pytest run:

          git clone https://github.com/cadquery/cadquery.git
          cd cadquery
          git checkout 23af517a66928e7c0bc3ebb6b86edf643af4751c

          patch -p1 < ../patches/cadquery.patch

          micromamba activate test
          pip install multimethod

          # workaround for nlopt 2.9.0 not available for Intel Mac
          if [[ "${{ matrix.os }}" == "macos-13" ]]; then
            micromamba install -y nlopt=2.9
          fi

          # workaround for pypi opt and casadi throwing a seg fault on exit 
          if [[ "$RUNNER_OS" == "Windows" ]]; then
            micromamba install -y nlopt casadi
          fi

          CONDA_PREFIX_BAK=$CONDA_PREFIX
          unset CONDA_PREFIX
          pip install .
          CONDA_PREFIX=$CONDA_PREFIX_BAK

          pytest tests -v -W ignore

Note, I check out one of the lastest cadquery commits just to have a stable base. This will be changed to master when the official OCP 7.8.1 is out

cadquery.patch:

diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py
index cedc480..dfa75bd 100644
--- a/cadquery/occ_impl/shapes.py
+++ b/cadquery/occ_impl/shapes.py
@@ -596,7 +596,7 @@ class Shape(object):
         Returns a hashed value denoting this shape. It is computed from the
         TShape and the Location. The Orientation is not used.
         """
-        return self.wrapped.HashCode(HASH_CODE_MAX)
+        return hash(self.wrapped)
 
     def isNull(self) -> bool:
         """
diff --git a/setup.py b/setup.py
index 9ad7b6b..bd15298 100644
--- a/setup.py
+++ b/setup.py
@@ -24,9 +24,9 @@ is_azure = "CONDA_PY" in os.environ
 is_conda = "CONDA_PREFIX" in os.environ
 
 # Only include the installation dependencies if we are not running on RTD or AppVeyor or in a conda env
-if not is_rtd and not is_appveyor and not is_azure and not is_conda:
+if not is_rtd and not is_appveyor and not is_azure:
     reqs = [
-        "cadquery-ocp>=7.7.0,<7.8",
+        "cadquery-ocp>=7.8.0,<7.9",
         "ezdxf",
         "multimethod>=1.11,<2.0",
         "nlopt>=2.9.0,<3.0",
diff --git a/tests/test_assembly.py b/tests/test_assembly.py
index bae54ab..1093ffb 100644
--- a/tests/test_assembly.py
+++ b/tests/test_assembly.py
@@ -702,20 +702,17 @@ def test_save(extension, args, nested_assy, nested_assy_sphere):
         ("stl", ("STL",), {}),
     ],
 )
-def test_export(extension, args, kwargs, tmpdir, nested_assy):
+def test_export(extension, args, kwargs, nested_assy):
 
     filename = "nested." + extension
-
-    with tmpdir:
-        nested_assy.export(filename, *args, **kwargs)
-        assert os.path.exists(filename)
+    nested_assy.export(filename, *args, **kwargs)
+    assert os.path.exists(filename)
 
 
-def test_export_vtkjs(tmpdir, nested_assy):
+def test_export_vtkjs(nested_assy):
 
-    with tmpdir:
-        nested_assy.export("nested.vtkjs")
-        assert os.path.exists("nested.vtkjs.zip")
+    nested_assy.export("nested.vtkjs")
+    assert os.path.exists("nested.vtkjs.zip")
 
 
 def test_export_errors(nested_assy):

Note, pytest under Python 3.13 does not support context managers any more for the fixture temp_path, hence I patched the two test routines, since they don't seem to need the temp dir

I will copy over the build workflow into @jmwright 's òcp_build-system, and as soon as you have officially published 7.8.1, I will change the PYWRAP parameter from my pipeline to false and download the source from your repro during build instead of using pywrap.

The result will then be published to pypi as the OCP wheels.

@bernhard-42
Copy link
Contributor

This workaround

          CONDA_PREFIX_BAK=$CONDA_PREFIX
          unset CONDA_PREFIX
          pip install .
          CONDA_PREFIX=$CONDA_PREFIX_BAK

is really ugly. Is there any chance to allow using pip install of cadquery in a conda environment?

Use case: I use micromamba to create the base Python env, and afterwards I only use pip. I don't want to switch to pyenv or the likes, because sometimes I need conda packages and micromamba is the best compromise

@bernhard-42
Copy link
Contributor

The working pipeline can be found at https://github.com/bernhard-42/repackage-ocp/actions/runs/12717883699

Copy link

codecov bot commented Jan 11, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 95.33%. Comparing base (b8370dd) to head (f97b095).
Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1589      +/-   ##
==========================================
- Coverage   95.33%   95.33%   -0.01%     
==========================================
  Files          28       28              
  Lines        6842     6841       -1     
  Branches     1025     1025              
==========================================
- Hits         6523     6522       -1     
  Misses        194      194              
  Partials      125      125              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@adam-urbanczyk
Copy link
Member Author

Mac passes, releasing OCP.

@adam-urbanczyk
Copy link
Member Author

This workaround

          CONDA_PREFIX_BAK=$CONDA_PREFIX
          unset CONDA_PREFIX
          pip install .
          CONDA_PREFIX=$CONDA_PREFIX_BAK

is really ugly. Is there any chance to allow using pip install of cadquery in a conda environment?

Use case: I use micromamba to create the base Python env, and afterwards I only use pip. I don't want to switch to pyenv or the likes, because sometimes I need conda packages and micromamba is the best compromise

Not really, we could use a custom env var to save you two lines. But you can also invoke the command in a subshell:

(unset CONDA_PREFIX && pip install . )

which makes the point moot IMO.

@bernhard-42
Copy link
Contributor

Fair.

@adam-urbanczyk
Copy link
Member Author

Tests pass with conda-forge ocp

@jmwright
Copy link
Member

@adam-urbanczyk I cannot find any issues with this PR.

@adam-urbanczyk adam-urbanczyk marked this pull request as ready for review January 18, 2025 17:03
@adam-urbanczyk
Copy link
Member Author

@jmwright @lorenzncode are OK with moving to 7.8?

@jmwright
Copy link
Member

@adam-urbanczyk Yes, the PyPI packages for 7.8.1 are available now.

Copy link
Member

@lorenzncode lorenzncode left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @adam-urbanczyk ! Yes, I tested locally and did not find any issue, tests pass.

tested local env
Linux fedora 6.12.8-200.fc41.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jan  2 19:26:03 UTC 2025 x86_64 GNU/Linux

micromamba list

List of packages in environment: "/home/lorenzn/tools/micromamba_250101/envs/cqocp78"

  Name                                  Version             Build                  Channel           
───────────────────────────────────────────────────────────────────────────────────────────────────────
  _libgcc_mutex                         0.1                 conda_forge            conda-forge       
  _openmp_mutex                         4.5                 2_gnu                  conda-forge       
  _x86_64-microarch-level               3                   2_x86_64_v3            conda-forge       
  aiohappyeyeballs                      2.4.4               pyhd8ed1ab_1           conda-forge       
  aiohttp                               3.11.11             py312h178313f_0        conda-forge       
  aiosignal                             1.3.2               pyhd8ed1ab_0           conda-forge       
  alsa-lib                              1.2.13              hb9d3cd8_0             conda-forge       
  ampl-asl                              1.0.0               h5888daf_2             conda-forge       
  aom                                   3.9.1               hac33072_0             conda-forge       
  asttokens                             3.0.0               pyhd8ed1ab_1           conda-forge       
  attrs                                 24.3.0              pyh71513ae_0           conda-forge       
  blosc                                 1.21.6              he440d0b_1             conda-forge       
  brotli                                1.1.0               hb9d3cd8_2             conda-forge       
  brotli-bin                            1.1.0               hb9d3cd8_2             conda-forge       
  bzip2                                 1.0.8               h4bc722e_7             conda-forge       
  c-ares                                1.34.4              hb9d3cd8_0             conda-forge       
  ca-certificates                       2024.12.14          hbcca054_0             conda-forge       
  cairo                                 1.18.2              h3394656_1             conda-forge       
  casadi                                3.6.7               py312hc8887ff_3        conda-forge       
  colorama                              0.4.6               pyhd8ed1ab_1           conda-forge       
  cyrus-sasl                            2.1.27              h54b06d7_7             conda-forge       
  dav1d                                 1.2.1               hd590300_0             conda-forge       
  dbus                                  1.13.6              h5008d03_3             conda-forge       
  decorator                             5.1.1               pyhd8ed1ab_1           conda-forge       
  docutils                              0.21.2              pyhd8ed1ab_1           conda-forge       
  double-conversion                     3.3.0               h59595ed_0             conda-forge       
  eigen                                 3.4.0               h00ab1b0_0             conda-forge       
  exceptiongroup                        1.2.2               pyhd8ed1ab_1           conda-forge       
  executing                             2.1.0               pyhd8ed1ab_1           conda-forge       
  expat                                 2.6.4               h5888daf_0             conda-forge       
  ezdxf                                 1.3.5               py312hc39e661_1        conda-forge       
  ffmpeg                                7.1.0               gpl_h099772d_709       conda-forge       
  font-ttf-dejavu-sans-mono             2.37                hab24e00_0             conda-forge       
  font-ttf-inconsolata                  3.000               h77eed37_0             conda-forge       
  font-ttf-source-code-pro              2.038               h77eed37_0             conda-forge       
  font-ttf-ubuntu                       0.83                h77eed37_3             conda-forge       
  fontconfig                            2.15.0              h7e30c49_1             conda-forge       
  fonts-conda-ecosystem                 1                   0                      conda-forge       
  fonts-conda-forge                     1                   0                      conda-forge       
  fonttools                             4.55.3              py312h178313f_1        conda-forge       
  freeimage                             3.18.0              h3a85593_22            conda-forge       
  freetype                              2.12.1              h267a509_2             conda-forge       
  fribidi                               1.0.10              h36c2ea0_0             conda-forge       
  frozenlist                            1.5.0               py312h66e93f0_0        conda-forge       
  gdk-pixbuf                            2.42.12             hb9ae30d_0             conda-forge       
  gl2ps                                 1.4.2               hae5d5c5_1             conda-forge       
  glew                                  2.1.0               h9c3ff4c_2             conda-forge       
  gmp                                   6.3.0               hac33072_2             conda-forge       
  graphite2                             1.3.13              h59595ed_1003          conda-forge       
  harfbuzz                              10.2.0              h4bba637_0             conda-forge       
  hdf4                                  4.2.15              h2a13503_7             conda-forge       
  hdf5                                  1.14.3              nompi_h2d575fe_108     conda-forge       
  icu                                   75.1                he02047a_0             conda-forge       
  idna                                  3.10                pyhd8ed1ab_1           conda-forge       
  imath                                 3.1.12              h7955e40_0             conda-forge       
  iniconfig                             2.0.0               pyhd8ed1ab_1           conda-forge       
  ipopt                                 3.14.17             h59d4785_0             conda-forge       
  ipython                               8.31.0              pyh707e725_0           conda-forge       
  jedi                                  0.19.2              pyhd8ed1ab_1           conda-forge       
  jsoncpp                               1.9.6               hf42df4d_1             conda-forge       
  jxrlib                                1.1                 hd590300_3             conda-forge       
  keyutils                              1.6.1               h166bdaf_0             conda-forge       
  krb5                                  1.21.3              h659f571_0             conda-forge       
  lame                                  3.100               h166bdaf_1003          conda-forge       
  lcms2                                 2.16                hb7c19ff_0             conda-forge       
  ld_impl_linux-64                      2.43                h712a8e2_2             conda-forge       
  lerc                                  4.0.0               h27087fc_0             conda-forge       
  level-zero                            1.20.2              h84d6215_0             conda-forge       
  libabseil                             20240722.0          cxx17_hbbce691_4       conda-forge       
  libaec                                1.1.3               h59595ed_0             conda-forge       
  libass                                0.17.3              hba53ac1_1             conda-forge       
  libblas                               3.9.0               26_linux64_openblas    conda-forge       
  libblasfeo                            0.1.4.1             had105d5_301           conda-forge       
  libbrotlicommon                       1.1.0               hb9d3cd8_2             conda-forge       
  libbrotlidec                          1.1.0               hb9d3cd8_2             conda-forge       
  libbrotlienc                          1.1.0               hb9d3cd8_2             conda-forge       
  libcblas                              3.9.0               26_linux64_openblas    conda-forge       
  libclang-cpp19.1                      19.1.7              default_hb5137d0_0     conda-forge       
  libclang13                            19.1.7              default_h9c6a7e4_0     conda-forge       
  libcups                               2.3.3               h4637d8d_4             conda-forge       
  libcurl                               8.11.1              h332b0f4_0             conda-forge       
  libdeflate                            1.23                h4ddbbb0_0             conda-forge       
  libdrm                                2.4.124             hb9d3cd8_0             conda-forge       
  libedit                               3.1.20240808        pl5321h7949ede_0       conda-forge       
  libegl                                1.7.0               ha4b6fd6_2             conda-forge       
  libev                                 4.33                hd590300_2             conda-forge       
  libexpat                              2.6.4               h5888daf_0             conda-forge       
  libfatrop                             0.0.4               h5888daf_1             conda-forge       
  libffi                                3.4.2               h7f98852_5             conda-forge       
  libgcc                                14.2.0              h77fa898_1             conda-forge       
  libgcc-ng                             14.2.0              h69a702a_1             conda-forge       
  libgfortran                           14.2.0              h69a702a_1             conda-forge       
  libgfortran-ng                        14.2.0              h69a702a_1             conda-forge       
  libgfortran5                          14.2.0              hd5240d6_1             conda-forge       
  libgl                                 1.7.0               ha4b6fd6_2             conda-forge       
  libglib                               2.82.2              h2ff4ddf_1             conda-forge       
  libglu                                9.0.3               h03adeef_0             conda-forge       
  libglvnd                              1.7.0               ha4b6fd6_2             conda-forge       
  libglx                                1.7.0               ha4b6fd6_2             conda-forge       
  libgomp                               14.2.0              h77fa898_1             conda-forge       
  libhwloc                              2.11.2              default_h0d58e46_1001  conda-forge       
  libiconv                              1.17                hd590300_2             conda-forge       
  libjpeg-turbo                         3.0.0               hd590300_1             conda-forge       
  liblapack                             3.9.0               26_linux64_openblas    conda-forge       
  libllvm19                             19.1.7              ha7bfdaf_0             conda-forge       
  liblzma                               5.6.3               hb9d3cd8_1             conda-forge       
  liblzma-devel                         5.6.3               hb9d3cd8_1             conda-forge       
  libnetcdf                             4.9.2               nompi_h00e09a9_116     conda-forge       
  libnghttp2                            1.64.0              h161d5f1_0             conda-forge       
  libnsl                                2.0.1               hd590300_0             conda-forge       
  libntlm                               1.8                 hb9d3cd8_0             conda-forge       
  libogg                                1.3.5               h4ab18f5_0             conda-forge       
  libopenblas                           0.3.28              pthreads_h94d23a6_1    conda-forge       
  libopenvino                           2024.6.0            hac27bb2_3             conda-forge       
  libopenvino-auto-batch-plugin         2024.6.0            h4d9b6c2_3             conda-forge       
  libopenvino-auto-plugin               2024.6.0            h4d9b6c2_3             conda-forge       
  libopenvino-hetero-plugin             2024.6.0            h3f63f65_3             conda-forge       
  libopenvino-intel-cpu-plugin          2024.6.0            hac27bb2_3             conda-forge       
  libopenvino-intel-gpu-plugin          2024.6.0            hac27bb2_3             conda-forge       
  libopenvino-intel-npu-plugin          2024.6.0            hac27bb2_3             conda-forge       
  libopenvino-ir-frontend               2024.6.0            h3f63f65_3             conda-forge       
  libopenvino-onnx-frontend             2024.6.0            h6363af5_3             conda-forge       
  libopenvino-paddle-frontend           2024.6.0            h6363af5_3             conda-forge       
  libopenvino-pytorch-frontend          2024.6.0            h5888daf_3             conda-forge       
  libopenvino-tensorflow-frontend       2024.6.0            h630ec5c_3             conda-forge       
  libopenvino-tensorflow-lite-frontend  2024.6.0            h5888daf_3             conda-forge       
  libopus                               1.3.1               h7f98852_1             conda-forge       
  libosqp                               0.6.3               h5888daf_1             conda-forge       
  libpciaccess                          0.18                hd590300_0             conda-forge       
  libpng                                1.6.45              h943b412_0             conda-forge       
  libpq                                 17.2                h3b95a9b_1             conda-forge       
  libprotobuf                           5.28.3              h6128344_1             conda-forge       
  libqdldl                              0.1.7               hcb278e6_0             conda-forge       
  libraw                                0.21.3              hca62329_0             conda-forge       
  librsvg                               2.58.4              h49af25d_2             conda-forge       
  libscotch                             7.0.4               h2fe6a88_5             conda-forge       
  libspral                              2024.05.08          h2b245be_4             conda-forge       
  libsqlite                             3.48.0              hee588c1_0             conda-forge       
  libssh2                               1.11.1              hf672d98_0             conda-forge       
  libstdcxx                             14.2.0              hc0a3c3a_1             conda-forge       
  libstdcxx-ng                          14.2.0              h4852527_1             conda-forge       
  libtheora                             1.1.1               h4ab18f5_1006          conda-forge       
  libtiff                               4.7.0               hd9ff511_3             conda-forge       
  libuuid                               2.38.1              h0b41bf4_0             conda-forge       
  libva                                 2.22.0              h8a09558_1             conda-forge       
  libvorbis                             1.3.7               h9c3ff4c_0             conda-forge       
  libvpx                                1.14.1              hac33072_0             conda-forge       
  libwebp-base                          1.5.0               h851e524_0             conda-forge       
  libxcb                                1.17.0              h8a09558_0             conda-forge       
  libxcrypt                             4.4.36              hd590300_1             conda-forge       
  libxkbcommon                          1.7.0               h2c5496b_1             conda-forge       
  libxml2                               2.13.5              h8d12d68_1             conda-forge       
  libzip                                1.11.2              h6991a6a_0             conda-forge       
  libzlib                               1.3.1               hb9d3cd8_2             conda-forge       
  loguru                                0.7.2               py312h7900ff3_2        conda-forge       
  lz4-c                                 1.10.0              h5888daf_1             conda-forge       
  matplotlib-inline                     0.1.7               pyhd8ed1ab_1           conda-forge       
  metis                                 5.1.0               hd0bcaf9_1007          conda-forge       
  msgpack-python                        1.1.0               py312h68727a3_0        conda-forge       
  multidict                             6.1.0               py312h178313f_2        conda-forge       
  multimethod                           1.12                pyhd8ed1ab_1           conda-forge       
  mumps-include                         5.7.3               ha770c72_6             conda-forge       
  mumps-seq                             5.7.3               h27a6a8b_0             conda-forge       
  munkres                               1.1.4               pyh9f0ad1d_0           conda-forge       
  mypy                                  1.14.1              py312h66e93f0_0        conda-forge       
  mypy_extensions                       1.0.0               pyha770c72_1           conda-forge       
  mysql-common                          9.0.1               h266115a_4             conda-forge       
  mysql-libs                            9.0.1               he0572af_4             conda-forge       
  ncurses                               6.5                 h2d0b736_2             conda-forge       
  nlohmann_json                         3.11.3              he02047a_1             conda-forge       
  nlopt                                 2.9.0               py312h1d0b465_0        conda-forge       
  numpy                                 2.2.1               py312h7e784f5_0        conda-forge       
  occt                                  7.8.1               all_h4c4714a_203       conda-forge       
  ocl-icd                               2.3.2               hb9d3cd8_2             conda-forge       
  ocp                                   7.8.1.0             py312_0                cadquery/label/dev
  opencl-headers                        2024.10.24          h5888daf_0             conda-forge       
  openexr                               3.3.2               h6326327_1             conda-forge       
  openh264                              2.5.0               hf92e6e3_0             conda-forge       
  openjpeg                              2.5.3               h5fbd93e_0             conda-forge       
  openldap                              2.6.9               he970967_0             conda-forge       
  openssl                               3.4.0               h7b32b05_1             conda-forge       
  packaging                             24.2                pyhd8ed1ab_2           conda-forge       
  pango                                 1.56.0              h861ebed_0             conda-forge       
  parso                                 0.8.4               pyhd8ed1ab_1           conda-forge       
  path                                  17.0.0              py312h7900ff3_0        conda-forge       
  pcre2                                 10.44               hba22ea6_2             conda-forge       
  pexpect                               4.9.0               pyhd8ed1ab_1           conda-forge       
  pickleshare                           0.7.5               pyhd8ed1ab_1004        conda-forge       
  pip                                   24.3.1              pyh8b19718_2           conda-forge       
  pixman                                0.44.2              h29eaf8c_0             conda-forge       
  pluggy                                1.5.0               pyhd8ed1ab_1           conda-forge       
  proj                                  9.5.1               h0054346_0             conda-forge       
  prompt-toolkit                        3.0.48              pyha770c72_1           conda-forge       
  propcache                             0.2.1               py312h66e93f0_0        conda-forge       
  proxsuite                             0.6.7               py312h68727a3_2        conda-forge       
  psutil                                6.1.1               py312h66e93f0_0        conda-forge       
  pthread-stubs                         0.4                 hb9d3cd8_1002          conda-forge       
  ptyprocess                            0.7.0               pyhd8ed1ab_1           conda-forge       
  pugixml                               1.14                h59595ed_0             conda-forge       
  pure_eval                             0.2.3               pyhd8ed1ab_1           conda-forge       
  pygments                              2.19.1              pyhd8ed1ab_0           conda-forge       
  pyparsing                             3.2.1               pyhd8ed1ab_0           conda-forge       
  pytest                                8.3.4               pyhd8ed1ab_1           conda-forge       
  python                                3.12.8              h9e4cc4f_1_cpython     conda-forge       
  python_abi                            3.12                5_cp312                conda-forge       
  qt6-main                              6.8.1               h588cce1_2             conda-forge       
  rapidjson                             1.1.0.post20240409  hac33072_1             conda-forge       
  readline                              8.2                 h8228510_1             conda-forge       
  scipy                                 1.15.1              py312h180e4f1_0        conda-forge       
  setuptools                            75.8.0              pyhff2d567_0           conda-forge       
  simde                                 0.8.2               h84d6215_0             conda-forge       
  snappy                                1.2.1               h8bd8927_1             conda-forge       
  sqlite                                3.48.0              h9eae976_0             conda-forge       
  stack_data                            0.6.3               pyhd8ed1ab_1           conda-forge       
  svt-av1                               2.3.0               h5888daf_0             conda-forge       
  tbb                                   2022.0.0            hceb3a55_0             conda-forge       
  tinyxml2                              10.0.0              h59595ed_0             conda-forge       
  tk                                    8.6.13              noxft_h4845f30_101     conda-forge       
  tomli                                 2.2.1               pyhd8ed1ab_1           conda-forge       
  traitlets                             5.14.3              pyhd8ed1ab_1           conda-forge       
  typing_extensions                     4.12.2              pyha770c72_1           conda-forge       
  typish                                1.9.3               pyhd8ed1ab_1           conda-forge       
  tzdata                                2025a               h78e105d_0             conda-forge       
  unicodedata2                          16.0.0              py312h66e93f0_0        conda-forge       
  utfcpp                                4.0.6               h005c6e1_0             conda-forge       
  vtk                                   9.3.1               qt_py312h71fb23e_214   conda-forge       
  vtk-base                              9.3.1               qt_py312h04237f5_214   conda-forge       
  vtk-io-ffmpeg                         9.3.1               qt_py312h71fb23e_214   conda-forge       
  wayland                               1.23.1              h3e06ad9_0             conda-forge       
  wayland-protocols                     1.37                hd8ed1ab_0             conda-forge       
  wcwidth                               0.2.13              pyhd8ed1ab_1           conda-forge       
  wheel                                 0.45.1              pyhd8ed1ab_1           conda-forge       
  wslink                                2.2.2               pyhd8ed1ab_0           conda-forge       
  x264                                  1!164.3095          h166bdaf_2             conda-forge       
  x265                                  3.5                 h924138e_3             conda-forge       
  xcb-util                              0.4.1               hb711507_2             conda-forge       
  xcb-util-cursor                       0.1.5               hb9d3cd8_0             conda-forge       
  xcb-util-image                        0.4.0               hb711507_2             conda-forge       
  xcb-util-keysyms                      0.4.1               hb711507_0             conda-forge       
  xcb-util-renderutil                   0.3.10              hb711507_0             conda-forge       
  xcb-util-wm                           0.4.2               hb711507_0             conda-forge       
  xkeyboard-config                      2.43                hb9d3cd8_0             conda-forge       
  xorg-libice                           1.1.2               hb9d3cd8_0             conda-forge       
  xorg-libsm                            1.2.5               he73a12e_0             conda-forge       
  xorg-libx11                           1.8.10              h4f16b4b_1             conda-forge       
  xorg-libxau                           1.0.12              hb9d3cd8_0             conda-forge       
  xorg-libxcomposite                    0.4.6               hb9d3cd8_2             conda-forge       
  xorg-libxcursor                       1.2.3               hb9d3cd8_0             conda-forge       
  xorg-libxdamage                       1.1.6               hb9d3cd8_0             conda-forge       
  xorg-libxdmcp                         1.1.5               hb9d3cd8_0             conda-forge       
  xorg-libxext                          1.3.6               hb9d3cd8_0             conda-forge       
  xorg-libxfixes                        6.0.1               hb9d3cd8_0             conda-forge       
  xorg-libxi                            1.8.2               hb9d3cd8_0             conda-forge       
  xorg-libxrandr                        1.5.4               hb9d3cd8_0             conda-forge       
  xorg-libxrender                       0.9.12              hb9d3cd8_0             conda-forge       
  xorg-libxt                            1.3.1               hb9d3cd8_0             conda-forge       
  xorg-libxtst                          1.2.5               hb9d3cd8_3             conda-forge       
  xorg-libxxf86vm                       1.1.6               hb9d3cd8_0             conda-forge       
  xz                                    5.6.3               hbcc6ac9_1             conda-forge       
  xz-gpl-tools                          5.6.3               hbcc6ac9_1             conda-forge       
  xz-tools                              5.6.3               hb9d3cd8_1             conda-forge       
  yarl                                  1.18.3              py312h66e93f0_0        conda-forge       
  zlib                                  1.3.1               hb9d3cd8_2             conda-forge       
  zstd                                  1.5.6               ha6fb4c9_0             conda-forge       

@jmwright
Copy link
Member

Thanks for the work on this @adam-urbanczyk !

@adam-urbanczyk adam-urbanczyk merged commit d1e4cb6 into master Jan 18, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants