nur-packages

My NUR packages
git clone git://git.sikmir.ru/nur-packages
Log | Files | Refs | README | LICENSE

package.nix (5052B)


      1 {
      2   lib,
      3   fetchFromGitHub,
      4   makeWrapper,
      5   writeShellScript,
      6   python3Packages,
      7   cogeo-mosaic,
      8   geojson-pydantic,
      9   rio-cogeo,
     10   rio-stac,
     11   starlette-cramjam,
     12 }:
     13 let
     14   pname = "titiler";
     15   version = "2.0.4";
     16 
     17   src = fetchFromGitHub {
     18     owner = "developmentseed";
     19     repo = "titiler";
     20     tag = version;
     21     hash = "sha256-E/i7OT5xWJLQbuIOCGyCj9pGU6cdpykT6/EgyeG0iPk=";
     22   };
     23 
     24   meta = {
     25     description = "A modern dynamic tile server built on top of FastAPI and Rasterio/GDAL";
     26     homepage = "https://developmentseed.org/titiler/";
     27     license = lib.licenses.mit;
     28     maintainers = [ lib.maintainers.sikmir ];
     29   };
     30 
     31   titiler-core = python3Packages.buildPythonPackage (finalAttrs: {
     32     inherit version src meta;
     33     pname = "${pname}.core";
     34     sourceRoot = "${src.name}/src/titiler/core";
     35     pyproject = true;
     36 
     37     build-system = with python3Packages; [ hatchling ];
     38 
     39     pythonRelaxDeps = true;
     40 
     41     dependencies = with python3Packages; [
     42       fastapi
     43       geojson-pydantic
     44       jinja2
     45       numpy
     46       pydantic
     47       rasterio
     48       rio-tiler
     49       morecantile
     50       simplejson
     51       typing-extensions
     52     ];
     53 
     54     optional-dependencies = {
     55       telemetry = with python3Packages; [
     56         opentelemetry-api
     57         opentelemetry-sdk
     58         opentelemetry-instrumentation-fastapi
     59         opentelemetry-instrumentation-logging
     60         opentelemetry-exporter-otlp
     61       ];
     62     };
     63 
     64     nativeCheckInputs = [
     65       python3Packages.pytestCheckHook
     66     ]
     67     ++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies);
     68   });
     69 
     70   titiler-extensions = python3Packages.buildPythonPackage (finalAttrs: {
     71     inherit version src meta;
     72     pname = "${pname}.extensions";
     73     sourceRoot = "${src.name}/src/titiler/extensions";
     74     pyproject = true;
     75 
     76     build-system = with python3Packages; [ hatchling ];
     77 
     78     dependencies = [ titiler-core ];
     79 
     80     optional-dependencies = {
     81       cogeo = [ rio-cogeo ];
     82       stac = [ python3Packages.rio-stac ];
     83     };
     84 
     85     nativeCheckInputs =
     86       with python3Packages;
     87       [
     88         jsonschema
     89         owslib
     90         pytestCheckHook
     91       ]
     92       ++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies);
     93 
     94     disabledTests = [
     95       "test_stacExtension" # requires network
     96     ];
     97   });
     98 
     99   titiler-mosaic = python3Packages.buildPythonPackage (finalAttrs: {
    100     inherit version src meta;
    101     pname = "${pname}.mosaic";
    102     sourceRoot = "${src.name}/src/titiler/mosaic";
    103     pyproject = true;
    104 
    105     build-system = with python3Packages; [ hatchling ];
    106 
    107     dependencies = [
    108       cogeo-mosaic
    109       titiler-core
    110     ];
    111 
    112     optional-dependencies = {
    113       mosaicjson = [ cogeo-mosaic ];
    114     };
    115 
    116     nativeCheckInputs =
    117       with python3Packages;
    118       [
    119         owslib
    120         pytestCheckHook
    121       ]
    122       ++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies);
    123   });
    124 
    125   titiler-xarray = python3Packages.buildPythonPackage (finalAttrs: {
    126     inherit version src meta;
    127     pname = "${pname}.xarray";
    128     sourceRoot = "${src.name}/src/titiler/xarray";
    129     pyproject = true;
    130 
    131     build-system = with python3Packages; [ hatchling ];
    132 
    133     dependencies = with python3Packages; [
    134       titiler-core
    135       xarray
    136       rioxarray
    137       obstore
    138       zarr
    139       starlette-cramjam
    140       pydantic-settings
    141     ];
    142 
    143     optional-dependencies = {
    144       fs = with python3Packages; [
    145         h5netcdf
    146         h5py
    147         fsspec
    148         s3fs
    149         aiohttp
    150         gcsfs
    151         requests
    152       ];
    153     };
    154 
    155     nativeCheckInputs =
    156       with python3Packages;
    157       [
    158         pytestCheckHook
    159       ]
    160       ++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies);
    161 
    162     disabledTests = [
    163       "test_io_fs_open_dataset"
    164       "test_io_open_zarr"
    165     ];
    166   });
    167 in
    168 python3Packages.buildPythonPackage (finalAttrs: {
    169   inherit
    170     pname
    171     version
    172     src
    173     meta
    174     ;
    175   sourceRoot = "${src.name}/src/titiler/application";
    176   pyproject = true;
    177 
    178   build-system = with python3Packages; [ hatchling ];
    179 
    180   nativeBuildInputs = [ makeWrapper ];
    181 
    182   dependencies = with python3Packages; [
    183     pydantic-settings
    184     starlette-cramjam
    185     titiler-core
    186     titiler-core.optional-dependencies.telemetry
    187     titiler-extensions
    188     titiler-extensions.optional-dependencies.cogeo
    189     titiler-extensions.optional-dependencies.stac
    190     titiler-mosaic
    191     titiler-mosaic.optional-dependencies.mosaicjson
    192     titiler-xarray
    193     titiler-xarray.optional-dependencies.fs
    194   ];
    195 
    196   nativeCheckInputs = with python3Packages; [
    197     boto3
    198     pytestCheckHook
    199   ];
    200 
    201   disabledTests = [
    202     "test_mosaic_auth_error" # requires network
    203   ];
    204 
    205   postInstall =
    206     let
    207       start_script = writeShellScript "titiler-serve" ''
    208         ${lib.getExe python3Packages.uvicorn} "$@" titiler.application.main:app;
    209       '';
    210     in
    211     ''
    212       makeWrapper ${start_script} $out/bin/titiler-serve \
    213         --prefix PYTHONPATH : "$out/${python3Packages.python.sitePackages}" \
    214         --prefix PYTHONPATH : "${python3Packages.makePythonPath finalAttrs.passthru.dependencies}";
    215     '';
    216 })