diff --git a/pkgs/development/python-modules/embreex/default.nix b/pkgs/development/python-modules/embreex/default.nix new file mode 100644 index 000000000000..5d76b5a8bbd4 --- /dev/null +++ b/pkgs/development/python-modules/embreex/default.nix @@ -0,0 +1,61 @@ +{ + lib, + fetchFromGitHub, + fetchpatch, + buildPythonPackage, + embree, + cython, + numpy, + setuptools, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "embreex"; + version = "4.4.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "trimesh"; + repo = "embreex"; + tag = version; + hash = "sha256-mUPc9CMHsFYb1ELBmj+XXCjYEIW1iV8ZaRCQ40tYS8w="; + }; + + build-system = [ + setuptools + numpy + cython + ]; + + dependencies = [ + numpy + ]; + + buildInputs = [ + embree + ]; + + pythonImportsCheck = [ + "embreex" + "embreex.mesh_construction" + "embreex.rtcore" + "embreex.rtcore_scene" + ]; + + preCheck = '' + # conflicts with $out + rm -rf embreex/ + ''; + + nativeCheckInputs = [ pytestCheckHook ]; + + meta = { + description = "Maintained PyEmbree fork, bindings for Intel's Embree ray engine"; + homepage = "https://github.com/trimesh/embreex"; + changelog = "https://github.com/trimesh/embreex/releases/tag/${src.tag}"; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ pbsds ]; + inherit (embree.meta) platforms; + }; +} diff --git a/pkgs/development/python-modules/trimesh/default.nix b/pkgs/development/python-modules/trimesh/default.nix index d2e37aa24ae4..9fd95c7ecb4d 100644 --- a/pkgs/development/python-modules/trimesh/default.nix +++ b/pkgs/development/python-modules/trimesh/default.nix @@ -6,7 +6,6 @@ pytestCheckHook, numpy, lxml, - trimesh, # optional deps colorlog, @@ -23,18 +22,19 @@ scipy, pillow, mapbox-earcut, + embreex, }: buildPythonPackage (finalAttrs: { pname = "trimesh"; - version = "4.11.5"; + version = "4.12.1"; pyproject = true; src = fetchFromGitHub { owner = "mikedh"; repo = "trimesh"; tag = finalAttrs.version; - hash = "sha256-LF7tjthYtsEZJLqBiQZBe4urLjSD3Vbi3g1ZJ++0Tyk="; + hash = "sha256-+Xmy3/GSnfj7u1sapMscoCGlRsz00IkUzEo9CJ5Ja3s="; }; build-system = [ setuptools ]; @@ -59,13 +59,20 @@ buildPythonPackage (finalAttrs: { pillow # vhacdx # not packaged mapbox-earcut - # embreex # not packaged + ] + ++ lib.optionals embreex.meta.available [ + embreex ]; }; nativeCheckInputs = [ lxml pytestCheckHook + ] + # embreex is maintained by trimesh devs + ++ lib.optionals embreex.meta.available [ + embreex + rtree ]; disabledTests = [ @@ -73,7 +80,12 @@ buildPythonPackage (finalAttrs: { "test_load" ]; - enabledTestPaths = [ "tests/test_minimal.py" ]; + enabledTestPaths = [ + "tests/test_minimal.py" + ] + ++ lib.optionals embreex.meta.available [ + "tests/test_ray.py" + ]; pythonImportsCheck = [ "trimesh" diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index 65758a2d5391..18c15d67895b 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -192,7 +192,6 @@ mapAliases { elegy = throw "elegy has been removed because it has transitively been marked as broken since 2023."; # Added 2025-10-11 email_validator = throw "'email_validator' has been renamed to/replaced by 'email-validator'"; # Converted to throw 2025-10-29 emailthreads = throw "'emailthreads' has been removed because the upstream repository was archived in 2024"; # Added 2026-04-09 - embreex = throw "embreex has been removed, as it required embree2"; # added 2025-09-14 enocean = throw "'enocean' was removed because Home Assistant switched to 'enocean-async'"; # added 2026-03-31 eris = throw "eris has been removed due to a hostile upstream moving tags and breaking src FODs"; # Added 2025-09-01 et_xmlfile = throw "'et_xmlfile' has been renamed to/replaced by 'et-xmlfile'"; # Converted to throw 2025-10-29 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 5d6657fb3a3b..697424104240 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4994,6 +4994,8 @@ self: super: with self; { embrace = callPackage ../development/python-modules/embrace { }; + embreex = callPackage ../development/python-modules/embreex { }; + emcee = callPackage ../development/python-modules/emcee { }; emoji = callPackage ../development/python-modules/emoji { };