diff --git a/pkgs/development/python-modules/pyimg4/default.nix b/pkgs/development/python-modules/pyimg4/default.nix new file mode 100644 index 000000000000..eced828111dc --- /dev/null +++ b/pkgs/development/python-modules/pyimg4/default.nix @@ -0,0 +1,76 @@ +{ + apple-compress, + asn1, + buildPythonPackage, + click, + fetchFromGitHub, + hatchling, + lib, + lzfse, + pycryptodome, + pylzss, + pytestCheckHook, + remotezip, + stdenv, + uv-dynamic-versioning, +}: + +buildPythonPackage rec { + pname = "pyimg4"; + version = "0.8.8"; + pyproject = true; + + src = fetchFromGitHub { + owner = "m1stadev"; + repo = "PyIMG4"; + tag = "v${version}"; + hash = "sha256-rGFHd4MAJrbKhtX+Ey/zqQ/12wWxDyBBy1xPGDFQjao="; + }; + + build-system = [ + hatchling + uv-dynamic-versioning + ]; + + pythonRelaxDeps = [ + "pylzss" + ]; + + dependencies = [ + asn1 + click + pycryptodome + pylzss + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + apple-compress + ] + ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ + lzfse + ]; + + pythonImportsCheck = [ "pyimg4" ]; + + nativeCheckInputs = [ + pytestCheckHook + remotezip + ]; + + disabledTests = [ + # tests take forever + "test_read_lzss_dec" + "test_read_lzss_enc" + "test_read_lzfse_dec" + "test_read_lzfse_enc" + "test_read_payp" + ]; + + meta = { + changelog = "https://github.com/m1stadev/PyIMG4/releases/tag/${src.tag}"; + description = "Python library/CLI tool for parsing Apple's Image4 format"; + homepage = "https://github.com/m1stadev/PyIMG4"; + license = lib.licenses.mit; + mainProgram = "pyimg4"; + maintainers = [ lib.maintainers.dotlambda ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 49c8ac2a2b74..8b18f2d6c95f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -13251,6 +13251,8 @@ self: super: with self; { pyicumessageformat = callPackage ../development/python-modules/pyicumessageformat { }; + pyimg4 = callPackage ../development/python-modules/pyimg4 { }; + pyimgbox = callPackage ../development/python-modules/pyimgbox { }; pyimpfuzzy = callPackage ../development/python-modules/pyimpfuzzy { inherit (pkgs) ssdeep; };