pycontrails 0.51.1__tar.gz → 0.52.0__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.

Files changed (274) hide show
  1. {pycontrails-0.51.1 → pycontrails-0.52.0}/.github/workflows/release.yaml +5 -1
  2. {pycontrails-0.51.1 → pycontrails-0.52.0}/.github/workflows/scorecard.yaml +1 -1
  3. {pycontrails-0.51.1 → pycontrails-0.52.0}/CHANGELOG.md +52 -3
  4. {pycontrails-0.51.1 → pycontrails-0.52.0}/Makefile +1 -0
  5. {pycontrails-0.51.1 → pycontrails-0.52.0}/PKG-INFO +20 -11
  6. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/_static/pycontrails.bib +74 -67
  7. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/api.rst +22 -1
  8. pycontrails-0.52.0/docs/integrations/APCEMM.ipynb +480 -0
  9. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/models.rst +1 -0
  10. pycontrails-0.52.0/docs/notebooks/CoCiP.ipynb +1553 -0
  11. pycontrails-0.52.0/docs/notebooks/Landsat.ipynb +865 -0
  12. pycontrails-0.52.0/docs/notebooks/Sentinel.ipynb +853 -0
  13. pycontrails-0.52.0/docs/notebooks/data/iagos-flight-landsat.csv +2411 -0
  14. pycontrails-0.52.0/docs/notebooks/data/iagos-flight-sentinel.csv +7274 -0
  15. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/observations.rst +2 -0
  16. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/__init__.py +1 -1
  17. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/_version.py +2 -2
  18. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/__init__.py +1 -1
  19. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/cache.py +1 -1
  20. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/flight.py +32 -28
  21. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/polygon.py +1 -1
  22. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/rgi_cython.c +1224 -283
  23. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/__init__.py +4 -1
  24. pycontrails-0.52.0/pycontrails/datalib/_leo_utils/search.py +250 -0
  25. pycontrails-0.52.0/pycontrails/datalib/_leo_utils/static/bq_roi_query.sql +6 -0
  26. pycontrails-0.52.0/pycontrails/datalib/_leo_utils/vis.py +60 -0
  27. pycontrails-0.51.1/pycontrails/core/datalib.py → pycontrails-0.52.0/pycontrails/datalib/_met_utils/metsource.py +1 -1
  28. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/arco_era5.py +8 -7
  29. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/common.py +3 -2
  30. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/era5.py +12 -11
  31. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/era5_model_level.py +12 -11
  32. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/hres.py +14 -13
  33. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/hres_model_level.py +15 -14
  34. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/ifs.py +14 -13
  35. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/gfs/gfs.py +15 -14
  36. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/goes.py +2 -2
  37. pycontrails-0.52.0/pycontrails/datalib/landsat.py +567 -0
  38. pycontrails-0.52.0/pycontrails/datalib/sentinel.py +512 -0
  39. pycontrails-0.52.0/pycontrails/models/apcemm/__init__.py +8 -0
  40. pycontrails-0.52.0/pycontrails/models/apcemm/apcemm.py +983 -0
  41. pycontrails-0.52.0/pycontrails/models/apcemm/inputs.py +226 -0
  42. pycontrails-0.52.0/pycontrails/models/apcemm/static/apcemm_yaml_template.yaml +183 -0
  43. pycontrails-0.52.0/pycontrails/models/apcemm/utils.py +437 -0
  44. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/__init__.py +2 -0
  45. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/output_formats.py +165 -0
  46. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocipgrid/cocip_grid.py +7 -6
  47. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/dry_advection.py +14 -5
  48. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails.egg-info/PKG-INFO +20 -11
  49. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails.egg-info/SOURCES.txt +20 -5
  50. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails.egg-info/requires.txt +20 -11
  51. {pycontrails-0.51.1 → pycontrails-0.52.0}/pyproject.toml +28 -15
  52. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/__init__.py +9 -0
  53. pycontrails-0.52.0/tests/unit/test_apcemm.py +370 -0
  54. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_cocip_grid.py +2 -2
  55. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_cocip_uncertainty.py +6 -5
  56. pycontrails-0.51.1/tests/unit/test_datalib.py → pycontrails-0.52.0/tests/unit/test_datalib_metsource.py +49 -49
  57. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_flight.py +18 -6
  58. pycontrails-0.52.0/tests/unit/test_leo.py +624 -0
  59. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_spire.py +1 -1
  60. pycontrails-0.51.1/.github/workflows/benchmark.yaml +0 -96
  61. pycontrails-0.51.1/docs/notebooks/CoCiP.ipynb +0 -1449
  62. pycontrails-0.51.1/pycontrails/datalib/spire/__init__.py +0 -19
  63. {pycontrails-0.51.1 → pycontrails-0.52.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  64. {pycontrails-0.51.1 → pycontrails-0.52.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  65. {pycontrails-0.51.1 → pycontrails-0.52.0}/.github/dependabot.yaml +0 -0
  66. {pycontrails-0.51.1 → pycontrails-0.52.0}/.github/pull_request_template.md +0 -0
  67. {pycontrails-0.51.1 → pycontrails-0.52.0}/.github/workflows/docs.yaml +0 -0
  68. {pycontrails-0.51.1 → pycontrails-0.52.0}/.github/workflows/doctest.yaml +0 -0
  69. {pycontrails-0.51.1 → pycontrails-0.52.0}/.github/workflows/test.yaml +0 -0
  70. {pycontrails-0.51.1 → pycontrails-0.52.0}/.gitignore +0 -0
  71. {pycontrails-0.51.1 → pycontrails-0.52.0}/.pre-commit-config.yaml +0 -0
  72. {pycontrails-0.51.1 → pycontrails-0.52.0}/.zenodo.json +0 -0
  73. {pycontrails-0.51.1 → pycontrails-0.52.0}/CONTRIBUTING.md +0 -0
  74. {pycontrails-0.51.1 → pycontrails-0.52.0}/LICENSE +0 -0
  75. {pycontrails-0.51.1 → pycontrails-0.52.0}/NOTICE +0 -0
  76. {pycontrails-0.51.1 → pycontrails-0.52.0}/README.md +0 -0
  77. {pycontrails-0.51.1 → pycontrails-0.52.0}/RELEASE.md +0 -0
  78. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/_static/css/style.css +0 -0
  79. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/_static/img/colab.png +0 -0
  80. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/_static/img/favicon.png +0 -0
  81. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/_static/img/logo-dark.png +0 -0
  82. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/_static/img/logo.png +0 -0
  83. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/changelog.rst +0 -0
  84. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/conf.py +0 -0
  85. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/contributing.rst +0 -0
  86. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/develop.rst +0 -0
  87. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/flight.rst +0 -0
  88. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/index.rst +0 -0
  89. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/install.rst +0 -0
  90. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/integrations/ACCF.ipynb +0 -0
  91. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/literature.rst +0 -0
  92. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/meteorology.rst +0 -0
  93. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/ARCO-ERA5.ipynb +0 -0
  94. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/AircraftPerformance.ipynb +0 -0
  95. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/Cache.ipynb +0 -0
  96. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/ECMWF.ipynb +0 -0
  97. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/Flight.ipynb +0 -0
  98. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/GFS.ipynb +0 -0
  99. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/GOES.ipynb +0 -0
  100. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/ISSR.ipynb +0 -0
  101. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/Meteorology.ipynb +0 -0
  102. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/SAC.ipynb +0 -0
  103. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/advection.ipynb +0 -0
  104. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/airports.ipynb +0 -0
  105. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/data/.gitignore +0 -0
  106. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/data/flight-ap.csv +0 -0
  107. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/data/flight-cocip.csv +0 -0
  108. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/data/flight-fdr.csv +0 -0
  109. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/data/flight-noisy.csv +0 -0
  110. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/data/flight.csv +0 -0
  111. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/flightplan.ipynb +0 -0
  112. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/model-levels.ipynb +0 -0
  113. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/run-cocip-on-flight.ipynb +0 -0
  114. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/run-cocip-with-fdr.ipynb +0 -0
  115. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks/specific-humidity-interpolation.ipynb +0 -0
  116. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/notebooks.rst +0 -0
  117. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/tutorials.rst +0 -0
  118. {pycontrails-0.51.1 → pycontrails-0.52.0}/docs/utilities.rst +0 -0
  119. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/aircraft_performance.py +0 -0
  120. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/airports.py +0 -0
  121. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/coordinates.py +0 -0
  122. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/fleet.py +0 -0
  123. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/flightplan.py +0 -0
  124. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/fuel.py +0 -0
  125. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/interpolation.py +0 -0
  126. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/met.py +0 -0
  127. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/met_var.py +0 -0
  128. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/models.py +0 -0
  129. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/rgi_cython.pyx +0 -0
  130. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/core/vector.py +0 -0
  131. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/__init__.py +0 -0
  132. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/model_levels.py +0 -0
  133. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +0 -0
  134. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/ecmwf/variables.py +0 -0
  135. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/gfs/__init__.py +0 -0
  136. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/datalib/gfs/variables.py +0 -0
  137. {pycontrails-0.51.1/pycontrails/datalib/spire → pycontrails-0.52.0/pycontrails/datalib}/spire.py +0 -0
  138. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/ext/bada.py +0 -0
  139. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/ext/cirium.py +0 -0
  140. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/ext/empirical_grid.py +0 -0
  141. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/ext/synthetic_flight.py +0 -0
  142. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/__init__.py +0 -0
  143. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/accf.py +0 -0
  144. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/cocip.py +0 -0
  145. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/cocip_params.py +0 -0
  146. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/cocip_uncertainty.py +0 -0
  147. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/contrail_properties.py +0 -0
  148. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/radiative_forcing.py +0 -0
  149. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/radiative_heating.py +0 -0
  150. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
  151. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/wake_vortex.py +0 -0
  152. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocip/wind_shear.py +0 -0
  153. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocipgrid/__init__.py +0 -0
  154. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
  155. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/emissions/__init__.py +0 -0
  156. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/emissions/black_carbon.py +0 -0
  157. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/emissions/emissions.py +0 -0
  158. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/emissions/ffm2.py +0 -0
  159. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
  160. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +0 -0
  161. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +0 -0
  162. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/humidity_scaling/__init__.py +0 -0
  163. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/humidity_scaling/humidity_scaling.py +0 -0
  164. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
  165. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
  166. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/issr.py +0 -0
  167. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/pcc.py +0 -0
  168. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/pcr.py +0 -0
  169. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/ps_model/__init__.py +0 -0
  170. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/ps_model/ps_aircraft_params.py +0 -0
  171. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/ps_model/ps_grid.py +0 -0
  172. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/ps_model/ps_model.py +0 -0
  173. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/ps_model/ps_operational_limits.py +0 -0
  174. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/ps_model/static/ps-aircraft-params-20240524.csv +0 -0
  175. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/ps_model/static/ps-synonym-list-20240524.csv +0 -0
  176. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/sac.py +0 -0
  177. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/models/tau_cirrus.py +0 -0
  178. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/physics/__init__.py +0 -0
  179. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/physics/constants.py +0 -0
  180. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/physics/geo.py +0 -0
  181. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/physics/jet.py +0 -0
  182. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/physics/thermo.py +0 -0
  183. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/physics/units.py +0 -0
  184. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/py.typed +0 -0
  185. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/utils/__init__.py +0 -0
  186. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/utils/dependencies.py +0 -0
  187. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/utils/iteration.py +0 -0
  188. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/utils/json.py +0 -0
  189. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/utils/temp.py +0 -0
  190. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails/utils/types.py +0 -0
  191. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails.egg-info/dependency_links.txt +0 -0
  192. {pycontrails-0.51.1 → pycontrails-0.52.0}/pycontrails.egg-info/top_level.txt +0 -0
  193. {pycontrails-0.51.1 → pycontrails-0.52.0}/setup.cfg +0 -0
  194. {pycontrails-0.51.1 → pycontrails-0.52.0}/setup.py +0 -0
  195. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/_deprecated.py +0 -0
  196. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/cocip/Makefile +0 -0
  197. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/cocip/README.md +0 -0
  198. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/cocip/benchmark.py +0 -0
  199. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/cocip/compare.py +0 -0
  200. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/cocip/data.md +0 -0
  201. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/cocip/output.py +0 -0
  202. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/cocip/review.ipynb +0 -0
  203. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/cocip-fortran/README.md +0 -0
  204. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
  205. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/north-atlantic-study/README.md +0 -0
  206. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/north-atlantic-study/support.py +0 -0
  207. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/benchmark/north-atlantic-study/validate.py +0 -0
  208. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/fixtures/cocip-met.py +0 -0
  209. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/fixtures/cocip-met2.py +0 -0
  210. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/fixtures/ecmwf-met.py +0 -0
  211. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/fixtures/gfs-met.py +0 -0
  212. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/__init__.py +0 -0
  213. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/conftest.py +0 -0
  214. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
  215. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/cocip-contrail-output.json +0 -0
  216. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/cocip-contrail-output2.json +0 -0
  217. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/cocip-flight-output.json +0 -0
  218. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/cocip-flight-output2.json +0 -0
  219. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
  220. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
  221. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/flight-cocip2.csv +0 -0
  222. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/flight-meridian.csv +0 -0
  223. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/flight-metadata.json +0 -0
  224. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
  225. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/flight.csv +0 -0
  226. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
  227. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/met-20190101-eu.nc +0 -0
  228. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/met-accf-pl.nc +0 -0
  229. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/met-accf-sl.nc +0 -0
  230. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/met-ecmwf-pl.nc +0 -0
  231. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/met-ecmwf-sl.nc +0 -0
  232. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/met-era5-cocip1.nc +0 -0
  233. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/met-era5-cocip2.nc +0 -0
  234. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/met-gfs.nc +0 -0
  235. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/polygon-bug.nc +0 -0
  236. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/rad-20190101-eu.nc +0 -0
  237. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/rad-era5-cocip1.nc +0 -0
  238. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/rad-era5-cocip2.nc +0 -0
  239. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/static/rad-gfs.nc +0 -0
  240. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_accf.py +0 -0
  241. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_airports.py +0 -0
  242. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_cache.py +0 -0
  243. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_cocip.py +0 -0
  244. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_cocip_grid_parity.py +0 -0
  245. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_cocip_radiative_forcing.py +0 -0
  246. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_coordinates.py +0 -0
  247. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_dry_advection.py +0 -0
  248. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_dtypes.py +0 -0
  249. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_ecmwf.py +0 -0
  250. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_emissions.py +0 -0
  251. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_fleet.py +0 -0
  252. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_flightplan.py +0 -0
  253. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_fuel.py +0 -0
  254. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_geo.py +0 -0
  255. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_gfs.py +0 -0
  256. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_goes.py +0 -0
  257. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_grid_to_netcdf.py +0 -0
  258. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_humidity_scaling.py +0 -0
  259. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_init.py +0 -0
  260. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_interpolation.py +0 -0
  261. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_met.py +0 -0
  262. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_met_cache.py +0 -0
  263. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_models.py +0 -0
  264. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_pcc.py +0 -0
  265. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_polygons.py +0 -0
  266. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_ps_model.py +0 -0
  267. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_sac_issr.py +0 -0
  268. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_tau_cirrus.py +0 -0
  269. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_thermo_sac.py +0 -0
  270. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_units.py +0 -0
  271. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
  272. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_utils.py +0 -0
  273. {pycontrails-0.51.1 → pycontrails-0.52.0}/tests/unit/test_vector.py +0 -0
  274. {pycontrails-0.51.1 → pycontrails-0.52.0}/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.17
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 &&
@@ -30,7 +30,7 @@ jobs:
30
30
  - uses: actions/checkout@v4
31
31
 
32
32
  - name: Run OpenSSF Security Scorecard
33
- uses: ossf/scorecard-action@v2.3.1
33
+ uses: ossf/scorecard-action@v2.3.3
34
34
  with:
35
35
  results_file: results.sarif
36
36
  results_format: sarif
@@ -1,5 +1,54 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.52.0
4
+
5
+ ### Breaking changes
6
+
7
+ - 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).
8
+
9
+ ### Features
10
+
11
+ - Add tools for running [APCEMM](https://github.com/MIT-LAE/APCEMM) from within pycontrails. This includes:
12
+ - utilities for generating APCEMM input files and running APCEMM (`pycontrails.models.apcemm.utils`)
13
+ - an interface (`pycontrails.models.apcemm.apcemm`) that allows users to run APCEMM as a pycontrails `Model`.
14
+ - Add [APCEMM tutorial notebook](https://py.contrails.org/integrations/APCEMM.html).
15
+ - Add prescribed sedimentation rate to `DryAdvection` model.
16
+ - Add `Landsat` and `Sentinel` datalibs for searching, retrieving, and visualizing Landsat 8-9 and Sentinel-2 imagery. The datalibs include:
17
+ - 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.
18
+ - 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.
19
+ - Add tutorial notebooks demonstrating how to use `Landsat` and `Sentinel` datalibs to find flights in high-resolution satellite imagery.
20
+ - Modify `Flight.to_geojson_multilinestring` to make grouping key optional and to support multiple antimeridian crossings.
21
+ - 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`.
22
+ - 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`.
23
+
24
+ ### Fixes
25
+
26
+ - Ensure width and depth are never attached to `DryAdvection` source when running pointwise-only model.
27
+ - Ensure that azimuth is not dropped when present in `DryAdvection` input source.
28
+ - Exclude netCDF version 1.7.0, which causes non-deterministic failures in unit tests primarily due to segmentation faults.
29
+ - Pin numpy to 1.x in runtime dependencies until a working numpy 2.x-compatible netCDF4 release is available.
30
+
31
+ ### Internals
32
+
33
+ - 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.
34
+ - Exclude APCEMM tutorial notebook from notebook tests.
35
+ - 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`.
36
+ - Ensure `GITHUB_ACTIONS` environment variable is available when building and testing wheels on linux.
37
+ - Skip cells that retrieve imagery data when running tests on Landsat and Sentinel tutorial notebooks.
38
+ - Add tests for `Flight.to_geojson_multilinestring` with grouping key omitted and update tests with multiple antimeridian crossings.
39
+ - Minimum pandas version is bumped to 2.2 to ensure the the `include_groups` keyword argument used in `Flight.to_geojson_multilinestring` is available.
40
+ - Upgrade minimum `mypy` dependencies
41
+
42
+ ## v0.51.2
43
+
44
+ ### Features
45
+
46
+ - Add functionality to automatically compare simulated contrails from `cocip.Cocip` with GOES satellite imagery (`compare_cocip_with_goes`).
47
+
48
+ ### Internals
49
+
50
+ - Fix documentation build in CI.
51
+
3
52
  ## v0.51.1
4
53
 
5
54
  ### Breaking changes
@@ -8,9 +57,9 @@
8
57
 
9
58
  ### Features
10
59
 
11
- - PS model: Support four aircraft types, including `E75L`, `E75S`, `E290`, and `E295`
12
- - PS model: Integrate `ps_synonym_list` to increase PS model aircraft type coverage to 102
13
- - PS model: Account for increase in fuel consumption due to engine deterioration between maintenance cycle
60
+ - PS model: Support four aircraft types, including `E75L`, `E75S`, `E290`, and `E295`.
61
+ - PS model: Integrate `ps_synonym_list` to increase PS model aircraft type coverage to 102.
62
+ - PS model: Account for increase in fuel consumption due to engine deterioration between maintenance cycle.
14
63
 
15
64
  ### Internals
16
65
 
@@ -202,6 +202,7 @@ nb-clean-check:
202
202
  nb-test: ensure-era5-cached nb-clean-check nb-black-check nb-check-links
203
203
  python -m pytest --nbval-lax \
204
204
  --ignore=docs/integrations/ACCF.ipynb \
205
+ --ignore=docs/integrations/APCEMM.ipynb \
205
206
  --ignore=docs/notebooks/specific-humidity-interpolation.ipynb \
206
207
  --ignore=docs/notebooks/GFS.ipynb \
207
208
  --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.51.1
3
+ Version: 0.52.0
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
@@ -28,21 +28,21 @@ Description-Content-Type: text/markdown
28
28
  License-File: LICENSE
29
29
  License-File: NOTICE
30
30
  Requires-Dist: dask>=2022.3
31
- Requires-Dist: numpy>=1.22
31
+ Requires-Dist: numpy<2.0.0,>=1.22
32
32
  Requires-Dist: overrides>=6.1
33
- Requires-Dist: pandas>=1.4
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,goes,jupyter,pyproj,vis,zarr]; extra == "complete"
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>=0.99; extra == "dev"
45
- Requires-Dist: mypy-extensions>=0.4; extra == "dev"
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"
@@ -51,6 +51,7 @@ Requires-Dist: pytest>=8.2; extra == "dev"
51
51
  Requires-Dist: pytest-cov>=2.11; extra == "dev"
52
52
  Requires-Dist: requests>=2.25; extra == "dev"
53
53
  Requires-Dist: ruff==0.4.1; extra == "dev"
54
+ Requires-Dist: setuptools; extra == "dev"
54
55
  Provides-Extra: docs
55
56
  Requires-Dist: doc8>=1.1; extra == "docs"
56
57
  Requires-Dist: furo>=2023.3; extra == "docs"
@@ -69,7 +70,7 @@ Requires-Dist: cdsapi>=0.4; extra == "ecmwf"
69
70
  Requires-Dist: cfgrib>=0.9; extra == "ecmwf"
70
71
  Requires-Dist: eccodes>=1.4; extra == "ecmwf"
71
72
  Requires-Dist: ecmwf-api-client>=1.6; extra == "ecmwf"
72
- Requires-Dist: netcdf4>=1.6.1; extra == "ecmwf"
73
+ Requires-Dist: netcdf4<1.7.0,>=1.6.1; extra == "ecmwf"
73
74
  Requires-Dist: platformdirs>=3.0; extra == "ecmwf"
74
75
  Requires-Dist: requests>=2.25; extra == "ecmwf"
75
76
  Requires-Dist: lxml>=5.1.0; extra == "ecmwf"
@@ -83,13 +84,21 @@ Requires-Dist: cfgrib>=0.9; extra == "gfs"
83
84
  Requires-Dist: eccodes>=1.4; extra == "gfs"
84
85
  Requires-Dist: platformdirs>=3.0; extra == "gfs"
85
86
  Requires-Dist: tqdm>=4.61; extra == "gfs"
86
- Provides-Extra: goes
87
- Requires-Dist: cartopy>=0.22; extra == "goes"
88
- Requires-Dist: gcsfs>=2022.3; extra == "goes"
89
- Requires-Dist: h5netcdf>=1.2; extra == "goes"
90
87
  Provides-Extra: jupyter
91
88
  Requires-Dist: ipywidgets>=7.6; extra == "jupyter"
92
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: h5netcdf>=1.2; extra == "sat"
98
+ Requires-Dist: pillow>=10.3; extra == "sat"
99
+ Requires-Dist: pyproj>=3.5; extra == "sat"
100
+ Requires-Dist: rasterio>=1.3; extra == "sat"
101
+ Requires-Dist: scikit-image>=0.18; extra == "sat"
93
102
  Provides-Extra: open3d
94
103
  Requires-Dist: open3d>=0.14; extra == "open3d"
95
104
  Provides-Extra: pyproj