pycontrails 0.51.2__tar.gz → 0.52.1__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.
Potentially problematic release.
This version of pycontrails might be problematic. Click here for more details.
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.github/workflows/release.yaml +5 -1
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.pre-commit-config.yaml +1 -1
- {pycontrails-0.51.2 → pycontrails-0.52.1}/CHANGELOG.md +63 -5
- {pycontrails-0.51.2 → pycontrails-0.52.1}/Makefile +9 -1
- {pycontrails-0.51.2/pycontrails.egg-info → pycontrails-0.52.1}/PKG-INFO +31 -12
- {pycontrails-0.51.2 → pycontrails-0.52.1}/README.md +15 -3
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/_static/pycontrails.bib +74 -67
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/api.rst +22 -1
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/index.rst +10 -2
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/install.rst +16 -9
- pycontrails-0.52.1/docs/integrations/APCEMM.ipynb +480 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/models.rst +1 -0
- pycontrails-0.52.1/docs/notebooks/Landsat.ipynb +865 -0
- pycontrails-0.52.1/docs/notebooks/Sentinel.ipynb +853 -0
- pycontrails-0.52.1/docs/notebooks/data/iagos-flight-landsat.csv +2411 -0
- pycontrails-0.52.1/docs/notebooks/data/iagos-flight-sentinel.csv +7274 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/observations.rst +2 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/__init__.py +1 -1
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/_version.py +2 -2
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/__init__.py +1 -1
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/cache.py +1 -1
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/coordinates.py +5 -5
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/flight.py +36 -32
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/interpolation.py +2 -2
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/met.py +23 -14
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/polygon.py +1 -1
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/rgi_cython.c +1224 -283
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/vector.py +1 -1
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/__init__.py +4 -1
- pycontrails-0.52.1/pycontrails/datalib/_leo_utils/search.py +250 -0
- pycontrails-0.52.1/pycontrails/datalib/_leo_utils/static/bq_roi_query.sql +6 -0
- pycontrails-0.52.1/pycontrails/datalib/_leo_utils/vis.py +60 -0
- pycontrails-0.51.2/pycontrails/core/datalib.py → pycontrails-0.52.1/pycontrails/datalib/_met_utils/metsource.py +1 -5
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/arco_era5.py +8 -7
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/common.py +3 -2
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/era5.py +12 -11
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/era5_model_level.py +12 -11
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/hres.py +14 -13
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/hres_model_level.py +15 -14
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/ifs.py +14 -13
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/gfs/gfs.py +15 -14
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/goes.py +12 -5
- pycontrails-0.52.1/pycontrails/datalib/landsat.py +567 -0
- pycontrails-0.52.1/pycontrails/datalib/sentinel.py +512 -0
- pycontrails-0.52.1/pycontrails/models/apcemm/__init__.py +8 -0
- pycontrails-0.52.1/pycontrails/models/apcemm/apcemm.py +983 -0
- pycontrails-0.52.1/pycontrails/models/apcemm/inputs.py +226 -0
- pycontrails-0.52.1/pycontrails/models/apcemm/static/apcemm_yaml_template.yaml +183 -0
- pycontrails-0.52.1/pycontrails/models/apcemm/utils.py +437 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/cocip_uncertainty.py +9 -9
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/output_formats.py +3 -2
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocipgrid/cocip_grid.py +7 -6
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/dry_advection.py +14 -5
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/physics/geo.py +1 -1
- {pycontrails-0.51.2 → pycontrails-0.52.1/pycontrails.egg-info}/PKG-INFO +31 -12
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails.egg-info/SOURCES.txt +20 -4
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails.egg-info/requires.txt +16 -9
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pyproject.toml +25 -14
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/__init__.py +9 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/conftest.py +13 -0
- pycontrails-0.52.1/tests/unit/test_apcemm.py +370 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_cocip.py +5 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_cocip_grid.py +2 -2
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_cocip_uncertainty.py +6 -5
- pycontrails-0.51.2/tests/unit/test_datalib.py → pycontrails-0.52.1/tests/unit/test_datalib_metsource.py +49 -49
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_ecmwf.py +8 -2
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_flight.py +18 -6
- pycontrails-0.52.1/tests/unit/test_leo.py +624 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_met.py +24 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_sac_issr.py +10 -1
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_spire.py +1 -1
- pycontrails-0.51.2/pycontrails/datalib/spire/__init__.py +0 -19
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.github/dependabot.yaml +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.github/pull_request_template.md +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.github/workflows/docs.yaml +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.github/workflows/doctest.yaml +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.github/workflows/scorecard.yaml +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.github/workflows/test.yaml +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.gitignore +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/.zenodo.json +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/CONTRIBUTING.md +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/LICENSE +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/NOTICE +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/RELEASE.md +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/_static/css/style.css +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/_static/img/colab.png +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/_static/img/favicon.png +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/_static/img/logo-dark.png +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/_static/img/logo.png +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/changelog.rst +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/conf.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/contributing.rst +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/develop.rst +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/flight.rst +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/integrations/ACCF.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/literature.rst +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/meteorology.rst +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/ARCO-ERA5.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/AircraftPerformance.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/Cache.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/CoCiP.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/ECMWF.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/Flight.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/GFS.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/GOES.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/ISSR.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/Meteorology.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/SAC.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/advection.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/airports.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/data/.gitignore +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/data/flight-ap.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/data/flight-cocip.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/data/flight-fdr.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/data/flight-noisy.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/data/flight.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/flightplan.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/model-levels.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/run-cocip-on-flight.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/run-cocip-with-fdr.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks/specific-humidity-interpolation.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/notebooks.rst +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/tutorials.rst +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/docs/utilities.rst +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/aircraft_performance.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/airports.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/fleet.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/flightplan.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/fuel.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/met_var.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/models.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/core/rgi_cython.pyx +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/model_levels.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/variables.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/gfs/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/datalib/gfs/variables.py +0 -0
- {pycontrails-0.51.2/pycontrails/datalib/spire → pycontrails-0.52.1/pycontrails/datalib}/spire.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/ext/bada.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/ext/cirium.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/ext/empirical_grid.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/ext/synthetic_flight.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/accf.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/cocip.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/cocip_params.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/contrail_properties.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/radiative_forcing.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/radiative_heating.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/wake_vortex.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocip/wind_shear.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocipgrid/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/emissions/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/emissions/black_carbon.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/emissions/emissions.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/emissions/ffm2.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/humidity_scaling/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/humidity_scaling/humidity_scaling.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/issr.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/pcc.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/pcr.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/ps_model/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/ps_model/ps_aircraft_params.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/ps_model/ps_grid.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/ps_model/ps_model.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/ps_model/ps_operational_limits.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/ps_model/static/ps-aircraft-params-20240524.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/ps_model/static/ps-synonym-list-20240524.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/sac.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/models/tau_cirrus.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/physics/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/physics/constants.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/physics/jet.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/physics/thermo.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/physics/units.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/py.typed +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/utils/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/utils/dependencies.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/utils/iteration.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/utils/json.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/utils/temp.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails/utils/types.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails.egg-info/dependency_links.txt +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/pycontrails.egg-info/top_level.txt +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/setup.cfg +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/setup.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/_deprecated.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/cocip/Makefile +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/cocip/README.md +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/cocip/benchmark.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/cocip/compare.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/cocip/data.md +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/cocip/output.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/cocip/review.ipynb +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/cocip-fortran/README.md +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/north-atlantic-study/README.md +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/north-atlantic-study/support.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/benchmark/north-atlantic-study/validate.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/fixtures/cocip-met.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/fixtures/cocip-met2.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/fixtures/ecmwf-met.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/fixtures/gfs-met.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/__init__.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/cocip-contrail-output.json +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/cocip-contrail-output2.json +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/cocip-flight-output.json +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/cocip-flight-output2.json +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/flight-cocip2.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/flight-meridian.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/flight-metadata.json +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/flight.csv +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/met-20190101-eu.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/met-accf-pl.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/met-accf-sl.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/met-ecmwf-pl.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/met-ecmwf-sl.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/met-era5-cocip1.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/met-era5-cocip2.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/met-gfs.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/polygon-bug.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/rad-20190101-eu.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/rad-era5-cocip1.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/rad-era5-cocip2.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/static/rad-gfs.nc +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_accf.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_airports.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_cache.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_cocip_grid_parity.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_cocip_radiative_forcing.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_coordinates.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_dry_advection.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_dtypes.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_emissions.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_fleet.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_flightplan.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_fuel.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_geo.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_gfs.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_goes.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_grid_to_netcdf.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_humidity_scaling.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_init.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_interpolation.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_met_cache.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_models.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_pcc.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_polygons.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_ps_model.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_tau_cirrus.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_thermo_sac.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_units.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_utils.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_vector.py +0 -0
- {pycontrails-0.51.2 → pycontrails-0.52.1}/tests/unit/test_zarr.py +0 -0
|
@@ -40,7 +40,7 @@ jobs:
|
|
|
40
40
|
|
|
41
41
|
# https://cibuildwheel.readthedocs.io/en/stable/options/#testing
|
|
42
42
|
- name: Build wheels
|
|
43
|
-
uses: pypa/cibuildwheel@v2.
|
|
43
|
+
uses: pypa/cibuildwheel@v2.19
|
|
44
44
|
env:
|
|
45
45
|
CIBW_BUILD: cp39-* cp310-* cp311-* cp312-*
|
|
46
46
|
CIBW_SKIP: '*-win32 *-manylinux_i686 *-musllinux*'
|
|
@@ -50,6 +50,10 @@ jobs:
|
|
|
50
50
|
# Completely isolate tests to prevent cibuildwheel from importing the
|
|
51
51
|
# source instead of the wheel. This happens when tests/__init__.py is read.
|
|
52
52
|
CIBW_TEST_EXTRAS: "complete,dev"
|
|
53
|
+
# Make sure GITHUB_ACTIONS
|
|
54
|
+
# (used to selectively skip expensive unit test)
|
|
55
|
+
# is passed through when testing linux wheels
|
|
56
|
+
CIBW_ENVIRONMENT_PASS_LINUX: GITHUB_ACTIONS
|
|
53
57
|
CIBW_TEST_COMMAND: >
|
|
54
58
|
mv {project}/pycontrails {project}/pycontrails-bak &&
|
|
55
59
|
python -m pytest {project}/tests -vv &&
|
|
@@ -1,14 +1,72 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.52.1
|
|
4
|
+
|
|
5
|
+
### Breaking changes
|
|
6
|
+
|
|
7
|
+
- Remove `lock=False` as a default keyword argument to `xr.open_mfdataset` in the `MetDataSource.open_dataset` method. This reverts a change from [v0.44.1](https://github.com/contrailcirrus/pycontrails/releases/tag/v0.44.1) and prevents segmentation faults when using recent versions of [netCDF4](https://pypi.org/project/netCDF4/) (1.7.0 and above).
|
|
8
|
+
- GOES imagery is now loaded from a temporary file on disk rather than directly from memory when using `GOES.get` without a cachestore.
|
|
9
|
+
|
|
10
|
+
### Internals
|
|
11
|
+
|
|
12
|
+
- Remove upper limits on netCDF4 and numpy versions.
|
|
13
|
+
- Remove h5netcdf dependency.
|
|
14
|
+
- Update doctests with numpy 2 scalar representation (see [NEP 51](https://numpy.org/neps/nep-0051-scalar-representation.html)). Doctests will now fail when run with numpy 1.
|
|
15
|
+
- Run certain tests in `test_ecmwf.py` and `test_met.py` using the single-threaded dask scheduler to prevent tests from hanging while waiting for a lock that is never released. (This issue was [encountered previously](https://github.com/contrailcirrus/pycontrails/pull/68), and removing `lock=False` in `MetDataSource.open_dataset` reverts the fix.)
|
|
16
|
+
- Document pycontrails installation from conda-forge.
|
|
17
|
+
|
|
18
|
+
### Fixes
|
|
19
|
+
|
|
20
|
+
- Ensure the `MetDataset` vertical coordinates `"air_pressure"` and `"altitude"` have the correct dtype.
|
|
21
|
+
|
|
22
|
+
## v0.52.0
|
|
23
|
+
|
|
24
|
+
### Breaking changes
|
|
25
|
+
|
|
26
|
+
- The `_antimeridian_index` helper method in the `flight` module now returns a list of integers rather than an integer. This allows `Flight.to_geojson_multilinestring` to support multiple antimeridian crossings (see below).
|
|
27
|
+
|
|
28
|
+
### Features
|
|
29
|
+
|
|
30
|
+
- Add tools for running [APCEMM](https://github.com/MIT-LAE/APCEMM) from within pycontrails. This includes:
|
|
31
|
+
- utilities for generating APCEMM input files and running APCEMM (`pycontrails.models.apcemm.utils`)
|
|
32
|
+
- an interface (`pycontrails.models.apcemm.apcemm`) that allows users to run APCEMM as a pycontrails `Model`.
|
|
33
|
+
- Add [APCEMM tutorial notebook](https://py.contrails.org/integrations/APCEMM.html).
|
|
34
|
+
- Add prescribed sedimentation rate to `DryAdvection` model.
|
|
35
|
+
- Add `Landsat` and `Sentinel` datalibs for searching, retrieving, and visualizing Landsat 8-9 and Sentinel-2 imagery. The datalibs include:
|
|
36
|
+
- Tools for querying Landsat and Sentinel-2 imagery for intersections with user-defined regions (`landsat.query`, `sentinel.query`) or flights (`landsat.intersect`, `sentinel.intersect`). These tools use BigQuery tables and require a Google Cloud Platform account with access to the BigQuery API.
|
|
37
|
+
- Tools for downloading and visualizing imagery from Landsat (`Landsat`) and Sentinel-2 (`Sentinel`). These tools retrieve data anonymously from Google Cloud Platform storage buckets and can be used without a Google Cloud Platform account.
|
|
38
|
+
- Add tutorial notebooks demonstrating how to use `Landsat` and `Sentinel` datalibs to find flights in high-resolution satellite imagery.
|
|
39
|
+
- Modify `Flight.to_geojson_multilinestring` to make grouping key optional and to support multiple antimeridian crossings.
|
|
40
|
+
- Update the `pycontrails` build system to require `numpy 2.0` per the [official numpy guidelines](https://numpy.org/devdocs/dev/depending_on_numpy.html#numpy-2-0-specific-advice). Note that the runtime requirement for `pycontrails` remains `numpy>=1.22`.
|
|
41
|
+
- Update `pycontrails` for breaking changes introduced in `numpy 2.0` (e.g., [NEP 50](https://numpy.org/neps/nep-0050-scalar-promotion.html)). All changes are backward compatible with `numpy>=1.22`.
|
|
42
|
+
|
|
43
|
+
### Fixes
|
|
44
|
+
|
|
45
|
+
- Ensure width and depth are never attached to `DryAdvection` source when running pointwise-only model.
|
|
46
|
+
- Ensure that azimuth is not dropped when present in `DryAdvection` input source.
|
|
47
|
+
- Exclude netCDF version 1.7.0, which causes non-deterministic failures in unit tests primarily due to segmentation faults.
|
|
48
|
+
- Pin numpy to 1.x in runtime dependencies until a working numpy 2.x-compatible netCDF4 release is available.
|
|
49
|
+
|
|
50
|
+
### Internals
|
|
51
|
+
|
|
52
|
+
- Create unit tests for the `APCEMM` interface that run if an `APCEMM` executable is found on the `PATH` inside a clean APCEMM git repository with a pinned git hash. These tests will be skipped unless users carefully configure their local test environment and will not run in CI.
|
|
53
|
+
- Exclude APCEMM tutorial notebook from notebook tests.
|
|
54
|
+
- Add unit tests for Landsat and Sentinel search tools and datalibs, but disable any tests that retrieve imagery data when running tests in GitHub Actions to limit resource consumption in GitHub runners. Users can disable these units tests locally by setting the environment variable `GITHUB_ACTIONS=true`.
|
|
55
|
+
- Ensure `GITHUB_ACTIONS` environment variable is available when building and testing wheels on linux.
|
|
56
|
+
- Skip cells that retrieve imagery data when running tests on Landsat and Sentinel tutorial notebooks.
|
|
57
|
+
- Add tests for `Flight.to_geojson_multilinestring` with grouping key omitted and update tests with multiple antimeridian crossings.
|
|
58
|
+
- Minimum pandas version is bumped to 2.2 to ensure the the `include_groups` keyword argument used in `Flight.to_geojson_multilinestring` is available.
|
|
59
|
+
- Upgrade minimum `mypy` dependencies
|
|
60
|
+
|
|
3
61
|
## v0.51.2
|
|
4
62
|
|
|
5
63
|
### Features
|
|
6
64
|
|
|
7
|
-
- Add functionality to automatically compare simulated contrails from `cocip.Cocip` with GOES satellite imagery (`compare_cocip_with_goes`)
|
|
65
|
+
- Add functionality to automatically compare simulated contrails from `cocip.Cocip` with GOES satellite imagery (`compare_cocip_with_goes`).
|
|
8
66
|
|
|
9
67
|
### Internals
|
|
10
68
|
|
|
11
|
-
- Fix documentation build in CI
|
|
69
|
+
- Fix documentation build in CI.
|
|
12
70
|
|
|
13
71
|
## v0.51.1
|
|
14
72
|
|
|
@@ -18,9 +76,9 @@
|
|
|
18
76
|
|
|
19
77
|
### Features
|
|
20
78
|
|
|
21
|
-
- PS model: Support four aircraft types, including `E75L`, `E75S`, `E290`, and `E295
|
|
22
|
-
- PS model: Integrate `ps_synonym_list` to increase PS model aircraft type coverage to 102
|
|
23
|
-
- PS model: Account for increase in fuel consumption due to engine deterioration between maintenance cycle
|
|
79
|
+
- PS model: Support four aircraft types, including `E75L`, `E75S`, `E290`, and `E295`.
|
|
80
|
+
- PS model: Integrate `ps_synonym_list` to increase PS model aircraft type coverage to 102.
|
|
81
|
+
- PS model: Account for increase in fuel consumption due to engine deterioration between maintenance cycle.
|
|
24
82
|
|
|
25
83
|
### Internals
|
|
26
84
|
|
|
@@ -133,6 +133,13 @@ main-test-status:
|
|
|
133
133
|
DOCS_DIR = docs
|
|
134
134
|
DOCS_BUILD_DIR = docs/_build
|
|
135
135
|
|
|
136
|
+
# Check that numpy 2 is being used
|
|
137
|
+
ensure-numpy-2:
|
|
138
|
+
[[ $$(python -c 'import numpy as np; print(np.__version__)') == 2.* ]] \
|
|
139
|
+
|| ( \
|
|
140
|
+
echo -e "$(COLOR_YELLOW)NumPy 2 required for doctests$(END_COLOR)"; \
|
|
141
|
+
exit 1)
|
|
142
|
+
|
|
136
143
|
# Check for GCP credentials
|
|
137
144
|
ensure-gcp-credentials:
|
|
138
145
|
python -c 'from google.cloud import storage; storage.Client()' \
|
|
@@ -163,7 +170,7 @@ ensure-era5-cached:
|
|
|
163
170
|
cache-era5-gcp: ensure-era5-cached
|
|
164
171
|
gcloud storage cp -r -n .doc-test-cache/* gs://contrails-301217-unit-test/doc-test-cache/
|
|
165
172
|
|
|
166
|
-
doctest: ensure-era5-cached ensure-gcp-credentials
|
|
173
|
+
doctest: ensure-numpy-2 ensure-era5-cached ensure-gcp-credentials
|
|
167
174
|
pytest --doctest-modules \
|
|
168
175
|
--ignore-glob=pycontrails/ext/* \
|
|
169
176
|
pycontrails -vv
|
|
@@ -202,6 +209,7 @@ nb-clean-check:
|
|
|
202
209
|
nb-test: ensure-era5-cached nb-clean-check nb-black-check nb-check-links
|
|
203
210
|
python -m pytest --nbval-lax \
|
|
204
211
|
--ignore=docs/integrations/ACCF.ipynb \
|
|
212
|
+
--ignore=docs/integrations/APCEMM.ipynb \
|
|
205
213
|
--ignore=docs/notebooks/specific-humidity-interpolation.ipynb \
|
|
206
214
|
--ignore=docs/notebooks/GFS.ipynb \
|
|
207
215
|
--ignore=docs/notebooks/run-cocip-on-flight.ipynb \
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pycontrails
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.52.1
|
|
4
4
|
Summary: Python library for modeling aviation climate impacts
|
|
5
5
|
Author-email: Breakthrough Energy <py@contrails.org>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -30,19 +30,19 @@ License-File: NOTICE
|
|
|
30
30
|
Requires-Dist: dask>=2022.3
|
|
31
31
|
Requires-Dist: numpy>=1.22
|
|
32
32
|
Requires-Dist: overrides>=6.1
|
|
33
|
-
Requires-Dist: pandas>=
|
|
33
|
+
Requires-Dist: pandas>=2.2
|
|
34
34
|
Requires-Dist: scipy>=1.10
|
|
35
35
|
Requires-Dist: xarray>=2022.3
|
|
36
36
|
Provides-Extra: complete
|
|
37
|
-
Requires-Dist: pycontrails[ecmwf,gcp,gfs,
|
|
37
|
+
Requires-Dist: pycontrails[ecmwf,gcp,gfs,jupyter,pyproj,sat,vis,zarr]; extra == "complete"
|
|
38
38
|
Provides-Extra: dev
|
|
39
39
|
Requires-Dist: black[jupyter]==24.4.1; extra == "dev"
|
|
40
40
|
Requires-Dist: dep_license; extra == "dev"
|
|
41
41
|
Requires-Dist: fastparquet>=0.8; extra == "dev"
|
|
42
42
|
Requires-Dist: ipdb>=0.13; extra == "dev"
|
|
43
43
|
Requires-Dist: memory_profiler; extra == "dev"
|
|
44
|
-
Requires-Dist: mypy>=
|
|
45
|
-
Requires-Dist: mypy-extensions>=0
|
|
44
|
+
Requires-Dist: mypy>=1.8; extra == "dev"
|
|
45
|
+
Requires-Dist: mypy-extensions>=1.0; extra == "dev"
|
|
46
46
|
Requires-Dist: platformdirs>=3.0; extra == "dev"
|
|
47
47
|
Requires-Dist: pre-commit>=2.10; extra == "dev"
|
|
48
48
|
Requires-Dist: psutil; extra == "dev"
|
|
@@ -84,13 +84,20 @@ Requires-Dist: cfgrib>=0.9; extra == "gfs"
|
|
|
84
84
|
Requires-Dist: eccodes>=1.4; extra == "gfs"
|
|
85
85
|
Requires-Dist: platformdirs>=3.0; extra == "gfs"
|
|
86
86
|
Requires-Dist: tqdm>=4.61; extra == "gfs"
|
|
87
|
-
Provides-Extra: goes
|
|
88
|
-
Requires-Dist: cartopy>=0.22; extra == "goes"
|
|
89
|
-
Requires-Dist: gcsfs>=2022.3; extra == "goes"
|
|
90
|
-
Requires-Dist: h5netcdf>=1.2; extra == "goes"
|
|
91
87
|
Provides-Extra: jupyter
|
|
92
88
|
Requires-Dist: ipywidgets>=7.6; extra == "jupyter"
|
|
93
89
|
Requires-Dist: jupyterlab>=2.2; extra == "jupyter"
|
|
90
|
+
Provides-Extra: sat
|
|
91
|
+
Requires-Dist: cartopy>=0.22; extra == "sat"
|
|
92
|
+
Requires-Dist: db-dtypes>=1.2; extra == "sat"
|
|
93
|
+
Requires-Dist: gcsfs>=2022.3; extra == "sat"
|
|
94
|
+
Requires-Dist: geojson>=3.1; extra == "sat"
|
|
95
|
+
Requires-Dist: google-cloud-bigquery>=3.23; extra == "sat"
|
|
96
|
+
Requires-Dist: google-cloud-bigquery-storage>=2.25; extra == "sat"
|
|
97
|
+
Requires-Dist: pillow>=10.3; extra == "sat"
|
|
98
|
+
Requires-Dist: pyproj>=3.5; extra == "sat"
|
|
99
|
+
Requires-Dist: rasterio>=1.3; extra == "sat"
|
|
100
|
+
Requires-Dist: scikit-image>=0.18; extra == "sat"
|
|
94
101
|
Provides-Extra: open3d
|
|
95
102
|
Requires-Dist: open3d>=0.14; extra == "open3d"
|
|
96
103
|
Provides-Extra: pyproj
|
|
@@ -113,7 +120,7 @@ Requires-Dist: zarr>=2.12; extra == "zarr"
|
|
|
113
120
|
|
|
114
121
|
| | |
|
|
115
122
|
|---------------|-------------------------------------------------------------------|
|
|
116
|
-
| **Version** | [](https://pypi.python.org/pypi/pycontrails) [](https://pypi.python.org/pypi/pycontrails) |
|
|
123
|
+
| **Version** | [](https://pypi.python.org/pypi/pycontrails) [](https://anaconda.org/conda-forge/pycontrails) [](https://pypi.python.org/pypi/pycontrails) |
|
|
117
124
|
| **Citation** | [](https://zenodo.org/badge/latestdoi/617248930) |
|
|
118
125
|
| **Tests** | [](https://github.com/contrailcirrus/pycontrails/actions/workflows/test.yaml) [](https://github.com/contrailcirrus/pycontrails/actions/workflows/docs.yaml) [](https://github.com/contrailcirrus/pycontrails/actions/workflows/release.yaml) [](https://securityscorecards.dev/viewer?uri=github.com/contrailcirrus/pycontrails)|
|
|
119
126
|
| **License** | [](https://github.com/contrailcirrus/pycontrails/blob/main/LICENSE) |
|
|
@@ -132,7 +139,9 @@ Documentation and examples available at [py.contrails.org](https://py.contrails.
|
|
|
132
139
|
|
|
133
140
|
## Install
|
|
134
141
|
|
|
135
|
-
|
|
142
|
+
### Install with pip
|
|
143
|
+
|
|
144
|
+
You can install pycontrails from PyPI with `pip` (Python 3.9 or later required):
|
|
136
145
|
|
|
137
146
|
```bash
|
|
138
147
|
$ pip install pycontrails
|
|
@@ -147,7 +156,17 @@ Install the latest development version directly from GitHub:
|
|
|
147
156
|
pip install git+https://github.com/contrailcirrus/pycontrails.git
|
|
148
157
|
```
|
|
149
158
|
|
|
150
|
-
|
|
159
|
+
### Install with conda
|
|
160
|
+
|
|
161
|
+
You can install pycontrails from the [conda-forge](https://conda-forge.org/) channel with `conda` (or other `conda`-like package managers such as `mamba`):
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
conda install -c conda-forge pycontrails
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
The conda-forge package includes all optional runtime dependencies.
|
|
168
|
+
|
|
169
|
+
See more installation options in the [install documentation](https://py.contrails.org/install).
|
|
151
170
|
|
|
152
171
|
## Get Involved
|
|
153
172
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| | |
|
|
6
6
|
|---------------|-------------------------------------------------------------------|
|
|
7
|
-
| **Version** | [](https://pypi.python.org/pypi/pycontrails) [](https://pypi.python.org/pypi/pycontrails) |
|
|
7
|
+
| **Version** | [](https://pypi.python.org/pypi/pycontrails) [](https://anaconda.org/conda-forge/pycontrails) [](https://pypi.python.org/pypi/pycontrails) |
|
|
8
8
|
| **Citation** | [](https://zenodo.org/badge/latestdoi/617248930) |
|
|
9
9
|
| **Tests** | [](https://github.com/contrailcirrus/pycontrails/actions/workflows/test.yaml) [](https://github.com/contrailcirrus/pycontrails/actions/workflows/docs.yaml) [](https://github.com/contrailcirrus/pycontrails/actions/workflows/release.yaml) [](https://securityscorecards.dev/viewer?uri=github.com/contrailcirrus/pycontrails)|
|
|
10
10
|
| **License** | [](https://github.com/contrailcirrus/pycontrails/blob/main/LICENSE) |
|
|
@@ -23,7 +23,9 @@ Documentation and examples available at [py.contrails.org](https://py.contrails.
|
|
|
23
23
|
|
|
24
24
|
## Install
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
### Install with pip
|
|
27
|
+
|
|
28
|
+
You can install pycontrails from PyPI with `pip` (Python 3.9 or later required):
|
|
27
29
|
|
|
28
30
|
```bash
|
|
29
31
|
$ pip install pycontrails
|
|
@@ -38,7 +40,17 @@ Install the latest development version directly from GitHub:
|
|
|
38
40
|
pip install git+https://github.com/contrailcirrus/pycontrails.git
|
|
39
41
|
```
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
### Install with conda
|
|
44
|
+
|
|
45
|
+
You can install pycontrails from the [conda-forge](https://conda-forge.org/) channel with `conda` (or other `conda`-like package managers such as `mamba`):
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
conda install -c conda-forge pycontrails
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The conda-forge package includes all optional runtime dependencies.
|
|
52
|
+
|
|
53
|
+
See more installation options in the [install documentation](https://py.contrails.org/install).
|
|
42
54
|
|
|
43
55
|
## Get Involved
|
|
44
56
|
|