spai 2026.3.18.dev0__tar.gz → 2026.3.35.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/PKG-INFO +1 -1
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/pyproject.toml +1 -1
- spai-2026.3.35.dev0/spai/__init__.py +1 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/load.py +0 -19
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/models/Config.py +7 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/storage/S3Storage.py +9 -12
- spai-2026.3.18.dev0/spai/__init__.py +0 -1
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/.gitignore +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/README.md +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/00_setup.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/00bis_download_satellite_imagery.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/01_satellite_data_access.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/02_geospatial_data_access.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/03_storage.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/04_infra_management.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/05_mails.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/99_new_data_access.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/03_xyz_api.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/03_xyz_api.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/05_nominatim_example.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/06_colorize.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/10_select_one_gdf_from_map.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/11_forest_monitoring_flow.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/12_forest_monitoring.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/13_ms_buildings_download.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/13_water_quality_flow.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/14_download_dem.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/14_water_quality.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/15_perform_analysis.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/legacy/00_download_satellite_imagery.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/legacy/01_process_satellite_imagery.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/legacy/02_analytics.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/legacy/04_download_satellite_imagery_advanced.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/legacy/21_storage.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/llanca 2.geojson +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/llanca.geojson +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/map.geojson +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/sample.pdf +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/samples/AOI_Vegetation_Growth.json +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/main.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/makefile +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/analytics/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/analytics/forest_monitoring.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/analytics/utils.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/analytics/water_quality.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/auth/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/auth/auth.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/auth/is_logged.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/auth/logout.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/auth/retrieve_credentials.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/cli.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/commands/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/commands/auth.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/commands/list.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/commands/stop.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/commands/workspace.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/config/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/config/config.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/config/validate.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/config/vars.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/climate/README.md +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/climate/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/climate/area_of_interest.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/climate/reanalysis_land_era5.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/ecosystems/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/ecosystems/protected_areas.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/fire/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/fire/fwi/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/fire/fwi/fwi_nasa.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/hidrology/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/hidrology/waterbodies.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/hidrology/waterways.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/download.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/explore.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/SHS5PCH4Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/SHS5PCODownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/SHS5PDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/SHS5PHCHODownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/SHS5PNO2Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/SHS5PO3Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/SHS5PSO2Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHCloudMaskDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHDEM30Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHExplorer.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS1Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS2Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS2L1CDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS2L2ADownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS3OLCIDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS3SLSTRDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/STACDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/aws/AWSDEM30Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/aws/AWSDEM90Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/aws/AWSDEMDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/aws/AWSDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/aws/AWSS2L2ADownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/aws/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/decorators.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCAlosPalsarAnnualDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCESAWCDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCLandsat8Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCModisBurnedDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCModisSnow8Downloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCModisSnowDayDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCS1GRDDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCS1RTCDownloader.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/utils.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/sources/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/sources/osm.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/utilities/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/utilities/buildings.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/utilities/pipelines.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/utilities/power.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/utilities/roads.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/errors/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/errors/auth.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/image/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/image/utils.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/image/xyz/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/image/xyz/cache.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/image/xyz/errors.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/image/xyz/get_image_tile.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/image/xyz/image_utils.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/models/StorageConfig.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/models/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/autocategorize1D.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/colorize_raster.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/convert_array_to_vector.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/mask_raster.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/normalised_difference.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/px_count.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/rasterio_mask.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/read_raster.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/save_table.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/processing/utils.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/delete_project.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/deploy_folder.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/deploy_template.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/download_template.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/get_logs.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/get_project_by_name.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/get_projects.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/get_service_by_name_type_project.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/get_services.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/init_project.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/install_requirements.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/README.md +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/analytics/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/analytics/main.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/analytics/requirements.txt +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/xyz/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/xyz/main.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/xyz/requirements.txt +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/notebooks/analytics/main.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/notebooks/analytics/requirements.txt +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/scripts/analytics/main.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/scripts/analytics/requirements.txt +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/scripts/downloader/main.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/scripts/downloader/requirements.txt +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/spai.config.local.yaml +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/spai.config.yaml +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/spai.vars.json +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/uis/map/main.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/uis/map/requirements.txt +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/run_local.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/stop_service.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/repos/APIRepo.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/repos/AuthRepo.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/repos/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/storage/BaseStorage.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/storage/CloudStorage.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/storage/LocalStorage.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/storage/Storage.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/storage/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/storage/create_s3.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/storage/decorators.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/storage/minio.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/task_logging/task_logger.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/workspaces/add_user_to_workspace.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/workspaces/change_user_role.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/workspaces/create_workspace.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/workspaces/get_workspaces.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/workspaces/remove_user_from_workspace.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/workspaces/remove_workspace.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/workspaces/update_workspace.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/config/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/config/test_vars.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/task_logging/test_task_logger.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_processing/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_processing/test_autocategorize1D.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_processing/test_mask_raster.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_processing/test_normalised_difference.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_processing/test_px_count.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_processing/test_read_raster.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_processing/test_save_table.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_pulses/__init__.py +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_pulses/results_forest_monitoring.ipynb +0 -0
- {spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_pulses/results_water_quality.ipynb +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2026.03.35.dev0"
|
|
@@ -7,24 +7,10 @@ from datetime import datetime
|
|
|
7
7
|
|
|
8
8
|
from . import DOWNLOADERS, AVAILABLE_COLLECTIONS, STATIC_COLLECTIONS
|
|
9
9
|
from .stac.STACDownloader import STACDownloader
|
|
10
|
-
from .stac.pc.PCDownloader import PCDownloader
|
|
11
10
|
from .utils import create_aoi_geodataframe
|
|
12
11
|
from .explore import explore_satellite_imagery
|
|
13
12
|
|
|
14
13
|
|
|
15
|
-
# when running for more than 45 mins, a script that downloads data from planetary computer will fail with a token error
|
|
16
|
-
# this function clears the token cache to avoid this error
|
|
17
|
-
def _refresh_planetary_computer_tokens():
|
|
18
|
-
try:
|
|
19
|
-
from planetary_computer.sas import TOKEN_CACHE
|
|
20
|
-
|
|
21
|
-
TOKEN_CACHE.clear()
|
|
22
|
-
|
|
23
|
-
print("Planetary Computer tokens refreshed", flush=True)
|
|
24
|
-
except ImportError:
|
|
25
|
-
pass
|
|
26
|
-
|
|
27
|
-
|
|
28
14
|
def load_satellite_imagery(
|
|
29
15
|
aoi: Any,
|
|
30
16
|
date: Optional[List[Union[str, datetime]]] = None,
|
|
@@ -85,11 +71,6 @@ def load_satellite_imagery(
|
|
|
85
71
|
print("Try introducing a date parameter to load a specific image.")
|
|
86
72
|
return
|
|
87
73
|
|
|
88
|
-
if issubclass(
|
|
89
|
-
DOWNLOADERS[collection], PCDownloader
|
|
90
|
-
): # not sure if should apply to other Downloaders as well
|
|
91
|
-
_refresh_planetary_computer_tokens()
|
|
92
|
-
|
|
93
74
|
downloader = DOWNLOADERS[collection](bbox, date, **kwargs)
|
|
94
75
|
data = downloader.load_stac()
|
|
95
76
|
|
|
@@ -17,6 +17,7 @@ class Resources(BaseModel):
|
|
|
17
17
|
cpu: Optional[Union[str, float]] = None
|
|
18
18
|
memory: Optional[str] = None
|
|
19
19
|
gpu: Optional[int] = None
|
|
20
|
+
ephemeral_storage: Optional[str] = None
|
|
20
21
|
|
|
21
22
|
def __init__(self, **data):
|
|
22
23
|
super().__init__(**data)
|
|
@@ -32,6 +33,12 @@ class Resources(BaseModel):
|
|
|
32
33
|
raise ValueError("CPU must be positive.")
|
|
33
34
|
if self.gpu is not None and self.gpu < 0:
|
|
34
35
|
raise ValueError("GPU must be positive.")
|
|
36
|
+
if self.ephemeral_storage is not None:
|
|
37
|
+
pattern = r"^\d+(Ei|Pi|Ti|Gi|Mi|Ki)$"
|
|
38
|
+
if not re.match(pattern, self.ephemeral_storage):
|
|
39
|
+
raise ValueError(
|
|
40
|
+
"Ephemeral storage must be a string with a number followed by a unit (Ei, Pi, Ti, Gi, Mi, Ki), such as 2Gi. "
|
|
41
|
+
)
|
|
35
42
|
|
|
36
43
|
|
|
37
44
|
class Autoscaling(BaseModel):
|
|
@@ -154,18 +154,16 @@ class S3Storage(BaseStorage):
|
|
|
154
154
|
|
|
155
155
|
@with_rioxarray
|
|
156
156
|
def create_from_rioxarray(self, rxr, data, name):
|
|
157
|
-
# TODO don't save to disk
|
|
158
157
|
content_type = "image/tiff"
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
# shutil.rmtree(os.path.dirname(tmp_path))
|
|
158
|
+
with tempfile.TemporaryDirectory() as tmp_dir:
|
|
159
|
+
tmp_path = os.path.join(tmp_dir, name)
|
|
160
|
+
data.rio.to_raster(tmp_path)
|
|
161
|
+
self.client.fput_object(
|
|
162
|
+
self.bucket,
|
|
163
|
+
name,
|
|
164
|
+
tmp_path,
|
|
165
|
+
content_type=content_type,
|
|
166
|
+
)
|
|
169
167
|
return self.get_url(name)
|
|
170
168
|
|
|
171
169
|
def create_from_array(self, data, name):
|
|
@@ -322,7 +320,6 @@ class S3Storage(BaseStorage):
|
|
|
322
320
|
|
|
323
321
|
@with_xarray
|
|
324
322
|
def create_from_netcdf(self, xr, data, name):
|
|
325
|
-
|
|
326
323
|
with tempfile.NamedTemporaryFile() as temp_file:
|
|
327
324
|
data.to_netcdf(temp_file.name)
|
|
328
325
|
self.client.fput_object(
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2026.03.18.dev0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/10_select_one_gdf_from_map.ipynb
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/11_forest_monitoring_flow.ipynb
RENAMED
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/13_ms_buildings_download.ipynb
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/development/13_water_quality_flow.ipynb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/legacy/00_download_satellite_imagery.ipynb
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/examples/legacy/01_process_satellite_imagery.ipynb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/SHS5PCODownloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/SHS5PDownloader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/S5P/SHS5PO3Downloader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHCloudMaskDownloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHDEM30Downloader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS1Downloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS2Downloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS2L1CDownloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS2L2ADownloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS3OLCIDownloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/sentinelhub/SHS3SLSTRDownloader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/aws/AWSDEM30Downloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/aws/AWSDEM90Downloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/aws/AWSDEMDownloader.py
RENAMED
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/aws/AWSS2L2ADownloader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCESAWCDownloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCLandsat8Downloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCModisBurnedDownloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCModisSnow8Downloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCModisSnowDayDownloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCS1GRDDownloader.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/data/satellite/stac/pc/PCS1RTCDownloader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/get_service_by_name_type_project.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/analytics/__init__.py
RENAMED
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/analytics/main.py
RENAMED
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/xyz/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/apis/xyz/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/scripts/analytics/main.py
RENAMED
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/scripts/downloader/main.py
RENAMED
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/spai.config.local.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/spai/project/project_template/uis/map/requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_processing/test_normalised_difference.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{spai-2026.3.18.dev0 → spai-2026.3.35.dev0}/tests/test_pulses/results_forest_monitoring.ipynb
RENAMED
|
File without changes
|
|
File without changes
|