From 899c6a51e2db508575b291fa162839b6ad8dae0d Mon Sep 17 00:00:00 2001 From: daspk04 Date: Sun, 30 Mar 2025 22:25:16 +0700 Subject: [PATCH] python3Packages.pyotb: init at 2.1.0 --- .../python-modules/pyotb/default.nix | 100 ++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 102 insertions(+) create mode 100644 pkgs/development/python-modules/pyotb/default.nix diff --git a/pkgs/development/python-modules/pyotb/default.nix b/pkgs/development/python-modules/pyotb/default.nix new file mode 100644 index 000000000000..f049a827a720 --- /dev/null +++ b/pkgs/development/python-modules/pyotb/default.nix @@ -0,0 +1,100 @@ +{ + lib, + fetchurl, + fetchFromGitHub, + buildPythonPackage, + python, + + # build-system + setuptools, + + # dependencies + otb, + + # tests + pytestCheckHook, + pytest-cov-stub, + requests, + writableTmpDirAsHomeHook, +}: +let + # fetch the test data separately or else none of the test will work + # https://github.com/orfeotoolbox/pyotb/blob/develop/tests/tests_data.py + spotImage = fetchurl { + url = "https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/raw/develop/Data/Input/SP67_FR_subset_1.tif"; + sha256 = "sha256-MuWY/g7KI+F23lFY/+AX5MLWJlIgHCr5BvFjDHzpWgY="; + }; + + pleiadesImage = fetchurl { + url = "https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/raw/develop/Data/Baseline/OTB/Images/prTvOrthoRectification_pleiades-1_noDEM.tif"; + sha256 = "sha256-1EsGAJdHgBIb/gfbh4Y7yEEmYHb54bSx4fEMKssZ/oA="; + }; + + otbWithPy = otb.override { + enablePython = true; + python3 = python; + }; +in +buildPythonPackage rec { + pname = "pyotb"; + version = "2.1.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "orfeotoolbox"; + repo = "pyotb"; + tag = version; + hash = "sha256-KomIMVx4jfsTSbGtoml9ON/82sHanOkp/mp1TiUaa2E="; + }; + + postPatch = '' + substituteInPlace pyotb/helpers.py \ + --replace-fail 'OTB_ROOT = os.environ.get("OTB_ROOT")' 'OTB_ROOT = "${otbWithPy}"' \ + --replace-fail 'os.environ["GDAL_DATA"] = gdal_data' "" \ + --replace-fail 'os.environ["PROJ_LIB"] = proj_lib' "" \ + --replace-fail 'os.environ["GDAL_DRIVER_PATH"] = "disable"' "" + + ln -s ${spotImage} $HOME/SP67_FR_subset_1.tif + ln -s ${pleiadesImage} $HOME/prTvOrthoRectification_pleiades-1_noDEM.tif + + substituteInPlace tests/tests_data.py \ + --replace-fail \ + 'SPOT_IMG_URL = "https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/raw/develop/Data/Input/SP67_FR_subset_1.tif"' \ + "SPOT_IMG_URL = '$HOME/SP67_FR_subset_1.tif'" \ + --replace-fail \ + 'PLEIADES_IMG_URL = "https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/raw/develop/Data/Baseline/OTB/Images/prTvOrthoRectification_pleiades-1_noDEM.tif"' \ + "PLEIADES_IMG_URL = '$HOME/prTvOrthoRectification_pleiades-1_noDEM.tif'" + ''; + + build-system = [ + setuptools + ]; + + dependencies = [ otbWithPy ]; + + pythonImportsCheck = [ "pyotb" ]; + + nativeCheckInputs = [ + pytestCheckHook + pytest-cov-stub + requests + writableTmpDirAsHomeHook + ]; + + disabledTests = [ + # test requires network access as inputs needs to be url + "test_app_input_vsi" + "test_img_metadata" + "test_summarize_pipeline_simple" + "test_summarize_pipeline_diamond" + "test_summarize_strip_output" + ]; + + meta = { + description = "Python extension of Orfeo Toolbox"; + homepage = "https://github.com/orfeotoolbox/pyotb"; + changelog = "https://github.com/orfeotoolbox/pyotb/tag/${version}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ daspk04 ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 7b973dcbacd0..cd9868b7d534 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12772,6 +12772,8 @@ self: super: with self; { pyosohotwaterapi = callPackage ../development/python-modules/pyosohotwaterapi { }; + pyotb = callPackage ../development/python-modules/pyotb { }; + pyotgw = callPackage ../development/python-modules/pyotgw { }; pyotp = callPackage ../development/python-modules/pyotp { };