pycontrails 0.39.3__tar.gz → 0.39.5__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.39.3 → pycontrails-0.39.5}/.github/pull_request_template.md +1 -2
- {pycontrails-0.39.3 → pycontrails-0.39.5}/.github/workflows/docs.yaml +13 -10
- pycontrails-0.39.5/.github/workflows/doctest.yaml +86 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/.github/workflows/release.yaml +13 -4
- {pycontrails-0.39.3 → pycontrails-0.39.5}/.github/workflows/test.yaml +3 -2
- {pycontrails-0.39.3 → pycontrails-0.39.5}/.gitignore +1 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/.pre-commit-config.yaml +0 -11
- pycontrails-0.39.5/.zenodo.json +23 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/CHANGELOG.md +20 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/Makefile +60 -29
- {pycontrails-0.39.3 → pycontrails-0.39.5}/PKG-INFO +2 -2
- {pycontrails-0.39.3 → pycontrails-0.39.5}/README.md +1 -1
- pycontrails-0.39.5/RELEASE.md +18 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/examples/ACCF.ipynb +3 -2
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/examples/Cache.ipynb +42 -26
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/examples/CoCiP.ipynb +44 -40
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/examples/ECMWF.ipynb +111 -1300
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/examples/Flight.ipynb +52 -51
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/examples/ISSR.ipynb +29 -42
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/examples/Meteorology.ipynb +80 -77
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/examples/SAC.ipynb +20 -17
- pycontrails-0.39.5/docs/tutorials/CoCiP.ipynb +1526 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/_version.py +2 -2
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/utils/synthetic_flight.py +3 -1
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails.egg-info/PKG-INFO +2 -2
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails.egg-info/SOURCES.txt +2 -1
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails.egg-info/requires.txt +3 -2
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pyproject.toml +4 -2
- pycontrails-0.39.3/RELEASE.md +0 -18
- pycontrails-0.39.3/docs/tutorials/CoCiP.ipynb +0 -1553
- pycontrails-0.39.3/tests/unit/test_bada.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/.github/workflows/benchmark.yaml +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/CONTRIBUTING.md +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/LICENSE +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/NOTICE +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/_static/css/style.css +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/_static/img/favicon.png +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/_static/pycontrails.bib +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/api.rst +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/changelog.rst +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/conf.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/contributing.rst +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/develop.rst +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/examples/flight.csv +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/examples.rst +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/index.rst +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/install.rst +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/literature.rst +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/tutorials/flight.csv +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/docs/tutorials.rst +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/cache.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/coordinates.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/datalib.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/fleet.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/flight.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/fuel.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/interpolation.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/met.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/met_var.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/models.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/polygon.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/core/vector.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/datalib/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/datalib/ecmwf/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/datalib/ecmwf/common.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/datalib/ecmwf/era5.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/datalib/ecmwf/hres.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/datalib/ecmwf/ifs.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/datalib/ecmwf/variables.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/datalib/gfs/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/datalib/gfs/gfs.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/datalib/gfs/variables.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/ext/bada/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/ext/cirium/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/accf.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/aircraft_performance.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/cocip.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/cocip_params.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/cocip_uncertainty.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/contrail_properties.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/output/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/output/flight_summary.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/output/grid_cirrus.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/radiative_forcing.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/radiative_heating.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/wake_vortex.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocip/wind_shear.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocipgrid/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocipgrid/cocip_grid.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/cocipgrid/cocip_time_handling.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/emissions/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/emissions/black_carbon.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/emissions/emissions.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/emissions/ffm2.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/emissions/static/edb-gaseous-v28c-engines.csv +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/emissions/static/edb-nvpm-v28c-engines.csv +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/humidity_scaling.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/issr.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/pcc.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/pcr.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/sac.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/models/tau_cirrus.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/physics/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/physics/constants.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/physics/geo.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/physics/jet.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/physics/thermo.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/physics/units.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/py.typed +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/utils/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/utils/iteration.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/utils/json.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/utils/temp.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails/utils/types.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails.egg-info/dependency_links.txt +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/pycontrails.egg-info/top_level.txt +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/setup.cfg +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/_deprecated.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/cocip/Makefile +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/cocip/README.md +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/cocip/benchmark.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/cocip/compare.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/cocip/data.md +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/cocip/output.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/cocip/review.ipynb +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/cocip-fortran/README.md +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/north-atlantic-study/README.md +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/north-atlantic-study/support.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/benchmark/north-atlantic-study/validate.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/fixtures/cocip-met.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/fixtures/cocip-met2.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/fixtures/ecmwf-met.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/fixtures/gfs-met.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/__init__.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/conftest.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/cocip-contrail-output.json +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/cocip-contrail-output2.json +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/cocip-flight-output.json +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/cocip-flight-output2.json +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/cocip-flight-statistics.json +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/cocip-output-grid-cirrus-summary.json +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/flight-cocip2.csv +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/flight-meridian.csv +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/flight-metadata.json +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/flight.csv +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/met-accf-pl.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/met-accf-sl.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/met-ecmwf-pl.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/met-ecmwf-sl.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/met-era5-cocip1.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/met-era5-cocip2.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/met-gfs.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/polygon-bug.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/rad-era5-cocip1.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/rad-era5-cocip2.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/static/rad-gfs.nc +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_accf.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_cache.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_cocip.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_cocip_grid.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_cocip_grid_parity.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_cocip_radiative_forcing.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_cocip_uncertainty.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_coordinates.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_datalib.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_dtypes.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_ecmwf.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_emissions.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_fleet.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_flight.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_fuel.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_geo.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_gfs.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_grid_to_netcdf.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_humidity_scaling.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_init.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_interpolation.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_met.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_met_cache.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_models.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_pcc.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_polygons.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_sac_issr.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_tau_cirrus.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_thermo_sac.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_units.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_utils.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_vector.py +0 -0
- {pycontrails-0.39.3 → pycontrails-0.39.5}/tests/unit/test_zarr.py +0 -0
|
@@ -2,7 +2,7 @@ Closes #XX
|
|
|
2
2
|
|
|
3
3
|
## Changes
|
|
4
4
|
|
|
5
|
-
> Description of changes in this PR.
|
|
5
|
+
> Description of changes in this PR.
|
|
6
6
|
> Use `make changelog` for starter.
|
|
7
7
|
> Should be copied and commit to `CHANGELOG.md`
|
|
8
8
|
|
|
@@ -17,7 +17,6 @@ Closes #XX
|
|
|
17
17
|
## Tests
|
|
18
18
|
|
|
19
19
|
- [ ] QC test passes locally (`make test`)
|
|
20
|
-
- [ ] Notebook test passes (`make nbtest`)
|
|
21
20
|
- [ ] CI tests pass
|
|
22
21
|
|
|
23
22
|
## Reviewer
|
|
@@ -2,23 +2,21 @@
|
|
|
2
2
|
# See https://github.com/actions/starter-workflows/blob/main/pages/static.yml for starter
|
|
3
3
|
# https://github.com/actions/starter-workflows/tree/main/pages
|
|
4
4
|
#
|
|
5
|
-
# Currently hosted at https://
|
|
5
|
+
# Currently hosted at https://py.contrails.org
|
|
6
6
|
name: Docs
|
|
7
7
|
|
|
8
|
-
# only build docs on
|
|
8
|
+
# only build docs on release tags
|
|
9
9
|
on:
|
|
10
10
|
push:
|
|
11
|
-
|
|
12
|
-
-
|
|
11
|
+
tags:
|
|
12
|
+
- '*'
|
|
13
13
|
|
|
14
14
|
# Allows run manually from the Actions tab
|
|
15
15
|
workflow_dispatch:
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
branches:
|
|
21
|
-
- main
|
|
17
|
+
# Global variables
|
|
18
|
+
env:
|
|
19
|
+
PYCONTRAILS_CACHE_DIR: '${{ github.workspace }}/.cache/pycontrails'
|
|
22
20
|
|
|
23
21
|
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
|
24
22
|
permissions:
|
|
@@ -48,7 +46,7 @@ jobs:
|
|
|
48
46
|
|
|
49
47
|
- uses: actions/setup-python@v4
|
|
50
48
|
with:
|
|
51
|
-
python-version: '3.
|
|
49
|
+
python-version: '3.11'
|
|
52
50
|
cache: 'pip'
|
|
53
51
|
cache-dependency-path: pyproject.toml
|
|
54
52
|
|
|
@@ -70,6 +68,11 @@ jobs:
|
|
|
70
68
|
chmod 600 ~/.ssh/id_rsa
|
|
71
69
|
pip install "pycontrails-bada @ git+ssh://git@github.com/contrailcirrus/pycontrails-bada.git"
|
|
72
70
|
|
|
71
|
+
# TODO: Execute notebooks for docs
|
|
72
|
+
# - name: Execute notebooks
|
|
73
|
+
# run: |
|
|
74
|
+
# make nb-execute
|
|
75
|
+
|
|
73
76
|
- name: Build docs
|
|
74
77
|
run: |
|
|
75
78
|
make docs-build
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Run notebook documentation tests from the ground up
|
|
2
|
+
|
|
3
|
+
name: Doc / Notebook tests
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
# run on push to main
|
|
7
|
+
push:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
|
|
11
|
+
# run on all PRs
|
|
12
|
+
pull_request:
|
|
13
|
+
|
|
14
|
+
# Allows run manually from the Actions tab
|
|
15
|
+
workflow_dispatch:
|
|
16
|
+
|
|
17
|
+
# Run if a release is published
|
|
18
|
+
workflow_call:
|
|
19
|
+
|
|
20
|
+
# Global variables
|
|
21
|
+
env:
|
|
22
|
+
PYCONTRAILS_CACHE_DIR: '${{ github.workspace }}/.cache/pycontrails'
|
|
23
|
+
|
|
24
|
+
# set from https://github.com/google-github-actions/auth
|
|
25
|
+
permissions:
|
|
26
|
+
contents: read
|
|
27
|
+
pages: write
|
|
28
|
+
|
|
29
|
+
# This allows a subsequently queued workflow run to interrupt previous runs
|
|
30
|
+
concurrency:
|
|
31
|
+
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
|
|
32
|
+
cancel-in-progress: true
|
|
33
|
+
|
|
34
|
+
jobs:
|
|
35
|
+
doc-test:
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
|
|
38
|
+
steps:
|
|
39
|
+
- uses: actions/checkout@v3
|
|
40
|
+
with:
|
|
41
|
+
fetch-depth: 0
|
|
42
|
+
|
|
43
|
+
- uses: actions/setup-python@v4
|
|
44
|
+
with:
|
|
45
|
+
python-version: '3.11'
|
|
46
|
+
cache: 'pip'
|
|
47
|
+
cache-dependency-path: pyproject.toml
|
|
48
|
+
|
|
49
|
+
- name: 'Authenticate to Google Cloud'
|
|
50
|
+
uses: 'google-github-actions/auth@v1'
|
|
51
|
+
with:
|
|
52
|
+
credentials_json: '${{ secrets.GCP_SERVICE_ACCOUNT }}'
|
|
53
|
+
|
|
54
|
+
- name: 'Set up Cloud SDK'
|
|
55
|
+
uses: 'google-github-actions/setup-gcloud@v1'
|
|
56
|
+
|
|
57
|
+
# put bada files in the default location
|
|
58
|
+
- name: BADA files
|
|
59
|
+
run: |
|
|
60
|
+
mkdir ../bada
|
|
61
|
+
gcloud storage cp -r gs://contrails-301217-bada/bada/bada3 ${{ github.workspace }}/../bada/
|
|
62
|
+
gcloud storage cp -r gs://contrails-301217-bada/bada/bada4 ${{ github.workspace }}/../bada/
|
|
63
|
+
|
|
64
|
+
# download ERA5 data from pre-cached data on GCP
|
|
65
|
+
- name: pycontrails cache (ERA5 data)
|
|
66
|
+
run: |
|
|
67
|
+
mkdir -p ${{ env.PYCONTRAILS_CACHE_DIR }}
|
|
68
|
+
gcloud storage cp -r gs://contrails-301217-unit-test/doc-test-cache/* ${{ env.PYCONTRAILS_CACHE_DIR }}/
|
|
69
|
+
|
|
70
|
+
- name: Install pycontrails (dev)
|
|
71
|
+
run: make dev-install
|
|
72
|
+
|
|
73
|
+
- name: Install pycontrails-bada extension
|
|
74
|
+
run: |
|
|
75
|
+
mkdir -p ~/.ssh/ && ssh-keyscan github.com > ~/.ssh/known_hosts
|
|
76
|
+
gcloud secrets versions access latest --secret="contrails-301217-github-ssh-key" > ~/.ssh/id_rsa
|
|
77
|
+
chmod 600 ~/.ssh/id_rsa
|
|
78
|
+
pip install "pycontrails-bada @ git+ssh://git@github.com/contrailcirrus/pycontrails-bada.git"
|
|
79
|
+
|
|
80
|
+
- name: Test notebooks
|
|
81
|
+
run: |
|
|
82
|
+
make nb-test
|
|
83
|
+
|
|
84
|
+
- name: Test docstrings
|
|
85
|
+
run: |
|
|
86
|
+
make doctest
|
|
@@ -11,12 +11,21 @@ on:
|
|
|
11
11
|
- main
|
|
12
12
|
|
|
13
13
|
jobs:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
check-main-test-status:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: OS Dependencies
|
|
18
|
+
run: sudo apt-get install -y curl jq
|
|
19
|
+
|
|
20
|
+
- uses: actions/checkout@v3
|
|
21
|
+
with:
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
|
|
24
|
+
- name: Check main test status
|
|
25
|
+
run: make main-test-status
|
|
17
26
|
|
|
18
27
|
build-dist:
|
|
19
|
-
needs:
|
|
28
|
+
needs: check-main-test-status
|
|
20
29
|
runs-on: ubuntu-latest
|
|
21
30
|
steps:
|
|
22
31
|
- uses: actions/checkout@v3
|
|
@@ -8,7 +8,8 @@ name: Unit tests
|
|
|
8
8
|
on:
|
|
9
9
|
# run on push to main
|
|
10
10
|
push:
|
|
11
|
-
branches:
|
|
11
|
+
branches:
|
|
12
|
+
- main
|
|
12
13
|
|
|
13
14
|
# run on all PRs
|
|
14
15
|
pull_request:
|
|
@@ -109,6 +110,6 @@ jobs:
|
|
|
109
110
|
make ruff
|
|
110
111
|
make mypy
|
|
111
112
|
make black-check
|
|
112
|
-
make pytest
|
|
113
113
|
make pydocstyle
|
|
114
|
+
make pytest
|
|
114
115
|
|
|
@@ -28,14 +28,3 @@ repos:
|
|
|
28
28
|
entry: black
|
|
29
29
|
types: [file]
|
|
30
30
|
files: \.(py|ipynb)$
|
|
31
|
-
- id: nb-clean
|
|
32
|
-
name: nb-clean
|
|
33
|
-
language_version: python3
|
|
34
|
-
language: python
|
|
35
|
-
entry: nb-clean clean
|
|
36
|
-
types: [file]
|
|
37
|
-
files: \.(ipynb)$
|
|
38
|
-
args:
|
|
39
|
-
- --remove-empty-cells
|
|
40
|
-
- --preserve-cell-outputs
|
|
41
|
-
- --
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"creators": [
|
|
3
|
+
{
|
|
4
|
+
"name": "Marc Shapiro",
|
|
5
|
+
"affiliation": "Breakthrough Energy"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"name": "Zeb Engberg",
|
|
9
|
+
"affiliation": "Breakthrough Energy"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "Roger Teoh",
|
|
13
|
+
"affiliation": "Imperial College London"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "Tom Dean",
|
|
17
|
+
"affiliation": "Breakthrough Energy"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"license": "Apache-2.0",
|
|
21
|
+
"title": "pycontrails: Python library for modeling aviation climate impacts",
|
|
22
|
+
"description": "<p><strong>pycontrails</strong> is an open source project and Python package for modeling aircraft contrails and other<br>\naviation related climate impacts.</p>\n\n<p><code>pycontrails</code> defines common data structures and interfaces to efficiently build and run models of aircraft performance, emissions, and radiative forcing.</p>\n\n<p>See the <a href=\"https://github.com/contrailcirrus/pycontrails\">Github repository</a> and <a href=\"https://py.contrails.org\">documentation</a> for more information.</p>"
|
|
23
|
+
}
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
|
|
2
2
|
# Changelog
|
|
3
3
|
|
|
4
|
+
## v0.39.5
|
|
5
|
+
|
|
6
|
+
#### Fixes
|
|
7
|
+
|
|
8
|
+
- Fix `docs/examples/CoCiP.ipynb` example demonstrating aircraft performance integration
|
|
9
|
+
- Fix unit test caused by breaking change in [pyproj 3.5.0](https://github.com/pyproj4/pyproj/releases/tag/3.5.0)
|
|
10
|
+
|
|
11
|
+
#### Internals
|
|
12
|
+
|
|
13
|
+
- Add additional Zenodo metadata
|
|
14
|
+
- Execute notebook examples in [Docs Action](https://github.com/contrailcirrus/pycontrails/actions/workflows/docs.yaml)
|
|
15
|
+
|
|
16
|
+
## v0.39.4
|
|
17
|
+
|
|
18
|
+
#### Internals
|
|
19
|
+
|
|
20
|
+
- Add additional Zenodo metadata
|
|
21
|
+
- Add [Doc / Notebook test Action](https://github.com/contrailcirrus/pycontrails/actions/workflows/doctest.yaml) to run notebook test (`make nb-test`) and doctests (`make doctest`) on pull requests.
|
|
22
|
+
- Update [Docs Action](https://github.com/contrailcirrus/pycontrails/actions/workflows/docs.yaml) to use python 3.11.
|
|
23
|
+
|
|
4
24
|
## v0.39.3
|
|
5
25
|
|
|
6
26
|
#### Fixes
|
|
@@ -73,12 +73,6 @@ black:
|
|
|
73
73
|
|
|
74
74
|
black-check:
|
|
75
75
|
black pycontrails --check
|
|
76
|
-
|
|
77
|
-
nbblack:
|
|
78
|
-
black docs/examples/*.ipynb
|
|
79
|
-
|
|
80
|
-
nbblack-check:
|
|
81
|
-
black docs/examples/*.ipynb --check
|
|
82
76
|
|
|
83
77
|
mypy:
|
|
84
78
|
mypy pycontrails
|
|
@@ -99,29 +93,7 @@ pytest-cov:
|
|
|
99
93
|
--ignore=tests/unit/test_zarr.py \
|
|
100
94
|
tests/unit
|
|
101
95
|
|
|
102
|
-
pytest-
|
|
103
|
-
pytest tests/integration
|
|
104
|
-
|
|
105
|
-
# Common ERA5 data for nbtests and doctests
|
|
106
|
-
ensure-era5-cached:
|
|
107
|
-
python -c 'from pycontrails.datalib.ecmwf import ERA5; \
|
|
108
|
-
time = "2022-03-01", "2022-03-01T23"; \
|
|
109
|
-
lev = [300, 250, 200]; \
|
|
110
|
-
met_vars = ["t", "q", "u", "v", "w", "ciwc", "z", "cc"]; \
|
|
111
|
-
rad_vars = ["tsr", "ttr"]; \
|
|
112
|
-
ERA5(time=time, variables=met_vars, pressure_levels=lev).download(); \
|
|
113
|
-
ERA5(time=time, variables=rad_vars).download()'
|
|
114
|
-
|
|
115
|
-
doctest: ensure-era5-cached
|
|
116
|
-
pytest --doctest-modules pycontrails -vv
|
|
117
|
-
|
|
118
|
-
nbtest: ensure-era5-cached nbblack-check
|
|
119
|
-
pytest -W ignore --nbval-lax -p no:python --ignore-glob=*/ACCF.ipynb docs/examples
|
|
120
|
-
|
|
121
|
-
nbclean:
|
|
122
|
-
nb-clean clean -e -o docs/examples
|
|
123
|
-
|
|
124
|
-
test: ruff mypy pytest doctest black-check nbblack-check pydocstyle
|
|
96
|
+
test: ruff mypy black-check nb-black-check pydocstyle pytest doctest nb-test
|
|
125
97
|
|
|
126
98
|
profile:
|
|
127
99
|
python -m cProfile -o $(script).prof $(script)
|
|
@@ -133,6 +105,12 @@ profile:
|
|
|
133
105
|
changelog:
|
|
134
106
|
git log $(shell git describe --tags --abbrev=0)..HEAD --pretty=format:'- (%h) %s'
|
|
135
107
|
|
|
108
|
+
main-test-status:
|
|
109
|
+
curl -s https://api.github.com/repos/contrailcirrus/pycontrails/actions/workflows/test.yaml/runs?branch=main \
|
|
110
|
+
| jq -e -r '.workflow_runs[0].status == "completed" and .workflow_runs[0].conclusion == "success"'
|
|
111
|
+
|
|
112
|
+
curl -s https://api.github.com/repos/contrailcirrus/pycontrails/actions/workflows/doctest.yaml/runs?branch=main \
|
|
113
|
+
| jq -e -r '.workflow_runs[0].status == "completed" and .workflow_runs[0].conclusion == "success"'
|
|
136
114
|
|
|
137
115
|
# ----
|
|
138
116
|
# Docs
|
|
@@ -141,9 +119,62 @@ changelog:
|
|
|
141
119
|
DOCS_DIR = docs
|
|
142
120
|
DOCS_BUILD_DIR = docs/_build
|
|
143
121
|
|
|
122
|
+
# Common ERA5 data for nb-tests and doctests
|
|
123
|
+
ensure-era5-cached:
|
|
124
|
+
python -c 'from pycontrails.datalib.ecmwf import ERA5; \
|
|
125
|
+
time = "2022-03-01", "2022-03-01T23"; \
|
|
126
|
+
lev = [300, 250, 200]; \
|
|
127
|
+
met_vars = ["t", "q", "u", "v", "w", "ciwc", "z", "cc"]; \
|
|
128
|
+
rad_vars = ["tsr", "ttr"]; \
|
|
129
|
+
ERA5(time=time, variables=met_vars, pressure_levels=lev).download(); \
|
|
130
|
+
ERA5(time=time, variables=rad_vars).download()'
|
|
131
|
+
|
|
132
|
+
cache-era5-gcp:
|
|
133
|
+
python -c 'from pycontrails.datalib.ecmwf import ERA5; \
|
|
134
|
+
from pycontrails import DiskCacheStore; \
|
|
135
|
+
cache = DiskCacheStore(cache_dir=".doc-test-cache"); \
|
|
136
|
+
time = "2022-03-01", "2022-03-01T23"; \
|
|
137
|
+
lev = [300, 250, 200]; \
|
|
138
|
+
met_vars = ["t", "q", "u", "v", "w", "ciwc", "z", "cc"]; \
|
|
139
|
+
rad_vars = ["tsr", "ttr"]; \
|
|
140
|
+
ERA5(time=time, variables=met_vars, pressure_levels=lev, cachestore=cache).download(); \
|
|
141
|
+
ERA5(time=time, variables=rad_vars, cachestore=cache).download()'
|
|
142
|
+
|
|
143
|
+
gcloud storage cp -r -n .doc-test-cache/* gs://contrails-301217-unit-test/doc-test-cache/
|
|
144
|
+
|
|
145
|
+
doctest: ensure-era5-cached
|
|
146
|
+
pytest --doctest-modules \
|
|
147
|
+
--ignore-glob=pycontrails/ext/* \
|
|
148
|
+
pycontrails -vv
|
|
149
|
+
|
|
144
150
|
doc8:
|
|
145
151
|
doc8 docs
|
|
146
152
|
|
|
153
|
+
nb-black:
|
|
154
|
+
black docs/examples/*.ipynb
|
|
155
|
+
|
|
156
|
+
nb-black-check:
|
|
157
|
+
black docs/examples/*.ipynb --check
|
|
158
|
+
|
|
159
|
+
nb-test: ensure-era5-cached nb-black-check nb-check-links
|
|
160
|
+
pytest --nbval-lax --ignore-glob=*/ACCF.ipynb docs/examples
|
|
161
|
+
|
|
162
|
+
# execute notebooks for docs output
|
|
163
|
+
# Note that nb-test will fail after running this locally
|
|
164
|
+
# TODO: this currently breaks the xarray notebook output styling somehow
|
|
165
|
+
nb-execute: nb-black-check
|
|
166
|
+
jupyter nbconvert --inplace \
|
|
167
|
+
--ClearMetadataPreprocessor.enabled=True \
|
|
168
|
+
--to notebook --execute docs/examples/[!ACCF]*.ipynb docs/tutorials/*.ipynb
|
|
169
|
+
|
|
170
|
+
# Check for broken links in notebooks
|
|
171
|
+
# https://github.com/jupyterlab/pytest-check-links
|
|
172
|
+
nb-check-links:
|
|
173
|
+
python -m pytest --check-links \
|
|
174
|
+
--check-links-ignore "https://doi.org/10.1021/acs.est.9b05608" \
|
|
175
|
+
--check-links-ignore "https://github.com/contrailcirrus/pycontrails-bada" \
|
|
176
|
+
docs/examples docs/tutorials
|
|
177
|
+
|
|
147
178
|
docs-build: doc8
|
|
148
179
|
sphinx-build -b html $(DOCS_DIR) $(DOCS_BUILD_DIR)/html
|
|
149
180
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pycontrails
|
|
3
|
-
Version: 0.39.
|
|
3
|
+
Version: 0.39.5
|
|
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
|
|
@@ -44,7 +44,7 @@ License-File: NOTICE
|
|
|
44
44
|
| | |
|
|
45
45
|
|---------------|-------------------------------------------------------------------|
|
|
46
46
|
| **Version** | [](https://pypi.python.org/pypi/pycontrails) [](https://pypi.python.org/pypi/pycontrails) |
|
|
47
|
-
| **Citation** |
|
|
47
|
+
| **Citation** | [](https://zenodo.org/badge/latestdoi/617248930) |
|
|
48
48
|
| **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)|
|
|
49
49
|
| **License** | [](https://github.com/contrailcirrus/pycontrails/blob/main/LICENSE) |
|
|
50
50
|
| **Community** | [](https://github.com/contrailcirrus/pycontrails/discussions) [](https://github.com/contrailcirrus/pycontrails/issues) [](https://github.com/contrailcirrus/pycontrails/pulls) |
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| | |
|
|
6
6
|
|---------------|-------------------------------------------------------------------|
|
|
7
7
|
| **Version** | [](https://pypi.python.org/pypi/pycontrails) [](https://pypi.python.org/pypi/pycontrails) |
|
|
8
|
-
| **Citation** |
|
|
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)|
|
|
10
10
|
| **License** | [](https://github.com/contrailcirrus/pycontrails/blob/main/LICENSE) |
|
|
11
11
|
| **Community** | [](https://github.com/contrailcirrus/pycontrails/discussions) [](https://github.com/contrailcirrus/pycontrails/issues) [](https://github.com/contrailcirrus/pycontrails/pulls) |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Release
|
|
2
|
+
|
|
3
|
+
> ``pycontrails`` is tagged and pushed to [pypi](https://pypi.org/project/pycontrails/) through GitHub Actions.
|
|
4
|
+
|
|
5
|
+
1. Ensure all changes to be released are committed and pushed to `main`.
|
|
6
|
+
1. Ensure [Unit tests](https://github.com/contrailcirrus/pycontrails/actions/workflows/test.yaml) and [Doc / Notebook tests](https://github.com/contrailcirrus/pycontrails/actions/workflows/doctest.yaml) have passed on `main`.
|
|
7
|
+
The [Release Action](https://github.com/contrailcirrus/pycontrails/actions/workflows/release.yaml) will fail if these actions have not completed successfully.
|
|
8
|
+
1. Review and update the [CHANGELOG](CHANGELOG.md).
|
|
9
|
+
Ensure the most recent entry is for the tag about to be released.
|
|
10
|
+
1. Create a [new release on Github](https://github.com/contrailcirrus/pycontrails/releases).
|
|
11
|
+
Double check that the release tag is consistent and consecutive with
|
|
12
|
+
the previous release tag following [PEP 440](https://peps.python.org/pep-0440/#version-scheme).
|
|
13
|
+
This often but not always agrees with [Semantic Versioning](https://semver.org/).
|
|
14
|
+
1. Copy the CHANGELOG content for the release into the *Description*.
|
|
15
|
+
1. Publish the new release.
|
|
16
|
+
This will create a tag on `main` and trigger the [Release Action](https://github.com/contrailcirrus/pycontrails/actions/workflows/release.yaml).
|
|
17
|
+
1. Confirm that the release is successfully deployed to [PyPI](https://pypi.org/project/pycontrails/).
|
|
18
|
+
1. Confirm that the documentation is successfully deployed to [py.contrails.org](https://py.contrails.org).
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"source": [
|
|
71
71
|
"## Download meteorology data from ECMWF\n",
|
|
72
72
|
"\n",
|
|
73
|
-
"This demo uses [ERA5](https://www.ecmwf.int/en/forecasts/
|
|
73
|
+
"This demo uses [ERA5](https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5) via the [Copernicus Data Store (CDS)](https://cds.climate.copernicus.eu/) for met data.\n",
|
|
74
74
|
"This requires account with [Copernicus Data Portal](https://cds.climate.copernicus.eu/cdsapp#!/home) and local `~/.cdsapirc` file with credentials."
|
|
75
75
|
]
|
|
76
76
|
},
|
|
@@ -812,7 +812,8 @@
|
|
|
812
812
|
"mimetype": "text/x-python",
|
|
813
813
|
"name": "python",
|
|
814
814
|
"nbconvert_exporter": "python",
|
|
815
|
-
"pygments_lexer": "ipython3"
|
|
815
|
+
"pygments_lexer": "ipython3",
|
|
816
|
+
"version": "3.10.8"
|
|
816
817
|
}
|
|
817
818
|
},
|
|
818
819
|
"nbformat": 4,
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"cell_type": "code",
|
|
16
|
-
"execution_count":
|
|
16
|
+
"execution_count": 1,
|
|
17
17
|
"metadata": {},
|
|
18
18
|
"outputs": [],
|
|
19
19
|
"source": [
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"cell_type": "code",
|
|
34
|
-
"execution_count":
|
|
34
|
+
"execution_count": 2,
|
|
35
35
|
"metadata": {},
|
|
36
36
|
"outputs": [],
|
|
37
37
|
"source": [
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"cell_type": "code",
|
|
43
|
-
"execution_count":
|
|
43
|
+
"execution_count": 3,
|
|
44
44
|
"metadata": {},
|
|
45
45
|
"outputs": [],
|
|
46
46
|
"source": [
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"cell_type": "code",
|
|
52
|
-
"execution_count":
|
|
52
|
+
"execution_count": 4,
|
|
53
53
|
"metadata": {},
|
|
54
54
|
"outputs": [
|
|
55
55
|
{
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"False"
|
|
59
59
|
]
|
|
60
60
|
},
|
|
61
|
-
"execution_count":
|
|
61
|
+
"execution_count": 4,
|
|
62
62
|
"metadata": {},
|
|
63
63
|
"output_type": "execute_result"
|
|
64
64
|
}
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
"cell_type": "code",
|
|
72
|
-
"execution_count":
|
|
72
|
+
"execution_count": 5,
|
|
73
73
|
"metadata": {},
|
|
74
74
|
"outputs": [],
|
|
75
75
|
"source": [
|
|
@@ -78,16 +78,16 @@
|
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
"cell_type": "code",
|
|
81
|
-
"execution_count":
|
|
81
|
+
"execution_count": 6,
|
|
82
82
|
"metadata": {},
|
|
83
83
|
"outputs": [
|
|
84
84
|
{
|
|
85
85
|
"data": {
|
|
86
86
|
"text/plain": [
|
|
87
|
-
"
|
|
87
|
+
"21090.761006"
|
|
88
88
|
]
|
|
89
89
|
},
|
|
90
|
-
"execution_count":
|
|
90
|
+
"execution_count": 6,
|
|
91
91
|
"metadata": {},
|
|
92
92
|
"output_type": "execute_result"
|
|
93
93
|
}
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
},
|
|
114
114
|
{
|
|
115
115
|
"cell_type": "code",
|
|
116
|
-
"execution_count":
|
|
116
|
+
"execution_count": 7,
|
|
117
117
|
"metadata": {},
|
|
118
118
|
"outputs": [],
|
|
119
119
|
"source": [
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
},
|
|
123
123
|
{
|
|
124
124
|
"cell_type": "code",
|
|
125
|
-
"execution_count":
|
|
125
|
+
"execution_count": 8,
|
|
126
126
|
"metadata": {},
|
|
127
127
|
"outputs": [
|
|
128
128
|
{
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
"'contrails-301217-unit-test'"
|
|
132
132
|
]
|
|
133
133
|
},
|
|
134
|
-
"execution_count":
|
|
134
|
+
"execution_count": 8,
|
|
135
135
|
"metadata": {},
|
|
136
136
|
"output_type": "execute_result"
|
|
137
137
|
}
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
},
|
|
143
143
|
{
|
|
144
144
|
"cell_type": "code",
|
|
145
|
-
"execution_count":
|
|
145
|
+
"execution_count": 9,
|
|
146
146
|
"metadata": {},
|
|
147
147
|
"outputs": [
|
|
148
148
|
{
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
"'test/objects/path.nc'"
|
|
152
152
|
]
|
|
153
153
|
},
|
|
154
|
-
"execution_count":
|
|
154
|
+
"execution_count": 9,
|
|
155
155
|
"metadata": {},
|
|
156
156
|
"output_type": "execute_result"
|
|
157
157
|
}
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
},
|
|
163
163
|
{
|
|
164
164
|
"cell_type": "code",
|
|
165
|
-
"execution_count":
|
|
165
|
+
"execution_count": 10,
|
|
166
166
|
"metadata": {},
|
|
167
167
|
"outputs": [
|
|
168
168
|
{
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
"'gs://contrails-301217-unit-test/test/objects/met/ecmwf/some-path.nc'"
|
|
172
172
|
]
|
|
173
173
|
},
|
|
174
|
-
"execution_count":
|
|
174
|
+
"execution_count": 10,
|
|
175
175
|
"metadata": {},
|
|
176
176
|
"output_type": "execute_result"
|
|
177
177
|
}
|
|
@@ -182,8 +182,13 @@
|
|
|
182
182
|
},
|
|
183
183
|
{
|
|
184
184
|
"cell_type": "code",
|
|
185
|
-
"execution_count":
|
|
186
|
-
"metadata": {
|
|
185
|
+
"execution_count": 11,
|
|
186
|
+
"metadata": {
|
|
187
|
+
"tags": [
|
|
188
|
+
"nbval-skip",
|
|
189
|
+
"skip-execution"
|
|
190
|
+
]
|
|
191
|
+
},
|
|
187
192
|
"outputs": [
|
|
188
193
|
{
|
|
189
194
|
"data": {
|
|
@@ -191,7 +196,7 @@
|
|
|
191
196
|
"False"
|
|
192
197
|
]
|
|
193
198
|
},
|
|
194
|
-
"execution_count":
|
|
199
|
+
"execution_count": 11,
|
|
195
200
|
"metadata": {},
|
|
196
201
|
"output_type": "execute_result"
|
|
197
202
|
}
|
|
@@ -211,7 +216,7 @@
|
|
|
211
216
|
},
|
|
212
217
|
{
|
|
213
218
|
"cell_type": "code",
|
|
214
|
-
"execution_count":
|
|
219
|
+
"execution_count": 12,
|
|
215
220
|
"metadata": {},
|
|
216
221
|
"outputs": [],
|
|
217
222
|
"source": [
|
|
@@ -220,8 +225,13 @@
|
|
|
220
225
|
},
|
|
221
226
|
{
|
|
222
227
|
"cell_type": "code",
|
|
223
|
-
"execution_count":
|
|
224
|
-
"metadata": {
|
|
228
|
+
"execution_count": 13,
|
|
229
|
+
"metadata": {
|
|
230
|
+
"tags": [
|
|
231
|
+
"nbval-skip",
|
|
232
|
+
"skip-execution"
|
|
233
|
+
]
|
|
234
|
+
},
|
|
225
235
|
"outputs": [
|
|
226
236
|
{
|
|
227
237
|
"data": {
|
|
@@ -229,7 +239,7 @@
|
|
|
229
239
|
"'cache.ipynb'"
|
|
230
240
|
]
|
|
231
241
|
},
|
|
232
|
-
"execution_count":
|
|
242
|
+
"execution_count": 13,
|
|
233
243
|
"metadata": {},
|
|
234
244
|
"output_type": "execute_result"
|
|
235
245
|
}
|
|
@@ -240,8 +250,13 @@
|
|
|
240
250
|
},
|
|
241
251
|
{
|
|
242
252
|
"cell_type": "code",
|
|
243
|
-
"execution_count":
|
|
244
|
-
"metadata": {
|
|
253
|
+
"execution_count": 14,
|
|
254
|
+
"metadata": {
|
|
255
|
+
"tags": [
|
|
256
|
+
"nbval-skip",
|
|
257
|
+
"skip-execution"
|
|
258
|
+
]
|
|
259
|
+
},
|
|
245
260
|
"outputs": [],
|
|
246
261
|
"source": [
|
|
247
262
|
"gcp.get(\"cache.ipynb\")"
|
|
@@ -263,7 +278,8 @@
|
|
|
263
278
|
"mimetype": "text/x-python",
|
|
264
279
|
"name": "python",
|
|
265
280
|
"nbconvert_exporter": "python",
|
|
266
|
-
"pygments_lexer": "ipython3"
|
|
281
|
+
"pygments_lexer": "ipython3",
|
|
282
|
+
"version": "3.10.8"
|
|
267
283
|
},
|
|
268
284
|
"vscode": {
|
|
269
285
|
"interpreter": {
|