pycontrails 0.57.0__tar.gz → 0.59.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 (294) hide show
  1. {pycontrails-0.57.0 → pycontrails-0.59.0}/.github/workflows/release.yaml +2 -2
  2. {pycontrails-0.57.0 → pycontrails-0.59.0}/.github/workflows/scorecard.yaml +2 -2
  3. {pycontrails-0.57.0 → pycontrails-0.59.0}/.github/workflows/test.yaml +1 -1
  4. {pycontrails-0.57.0 → pycontrails-0.59.0}/CHANGELOG.md +30 -0
  5. {pycontrails-0.57.0 → pycontrails-0.59.0}/Makefile +1 -0
  6. {pycontrails-0.57.0/pycontrails.egg-info → pycontrails-0.59.0}/PKG-INFO +5 -6
  7. {pycontrails-0.57.0 → pycontrails-0.59.0}/README.md +1 -1
  8. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/api.rst +12 -2
  9. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/install.rst +3 -2
  10. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/GOES.ipynb +4 -4
  11. pycontrails-0.59.0/docs/notebooks/GRUAN.ipynb +1054 -0
  12. pycontrails-0.59.0/docs/notebooks/run-cocip-on-flight.ipynb +1539 -0
  13. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/observations.rst +5 -0
  14. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/_version.py +3 -3
  15. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/aircraft_performance.py +1 -1
  16. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/cache.py +2 -2
  17. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/fleet.py +2 -7
  18. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/flight.py +2 -7
  19. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/interpolation.py +45 -67
  20. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/met.py +62 -37
  21. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/polygon.py +3 -3
  22. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/rgi_cython.c +624 -2170
  23. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/rgi_cython.pyx +0 -144
  24. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/vector.py +3 -8
  25. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/_met_utils/metsource.py +4 -7
  26. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/common.py +2 -2
  27. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/hres.py +2 -2
  28. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/ifs.py +1 -1
  29. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/gfs/gfs.py +1 -1
  30. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/goes.py +10 -3
  31. pycontrails-0.59.0/pycontrails/datalib/gruan.py +343 -0
  32. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/himawari/header_struct.py +1 -1
  33. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/himawari/himawari.py +24 -7
  34. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/leo_utils/sentinel_metadata.py +9 -9
  35. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/ext/synthetic_flight.py +2 -2
  36. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/cocip_uncertainty.py +1 -1
  37. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/contrail_properties.py +1 -1
  38. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/output_formats.py +1 -1
  39. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocipgrid/cocip_grid.py +3 -3
  40. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/dry_advection.py +1 -1
  41. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/extended_k15.py +4 -4
  42. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/humidity_scaling/humidity_scaling.py +2 -2
  43. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/ps_model/ps_grid.py +2 -2
  44. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/sac.py +1 -1
  45. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/tau_cirrus.py +1 -1
  46. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/physics/thermo.py +4 -4
  47. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/utils/iteration.py +1 -1
  48. {pycontrails-0.57.0 → pycontrails-0.59.0/pycontrails.egg-info}/PKG-INFO +5 -6
  49. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails.egg-info/SOURCES.txt +3 -0
  50. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails.egg-info/requires.txt +1 -2
  51. {pycontrails-0.57.0 → pycontrails-0.59.0}/pyproject.toml +23 -9
  52. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_cocip.py +13 -27
  53. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_dtypes.py +2 -2
  54. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_goes.py +23 -0
  55. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_grid_to_netcdf.py +1 -1
  56. pycontrails-0.59.0/tests/unit/test_gruan.py +143 -0
  57. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_interpolation.py +7 -9
  58. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_met.py +20 -0
  59. pycontrails-0.57.0/docs/notebooks/run-cocip-on-flight.ipynb +0 -1532
  60. {pycontrails-0.57.0 → pycontrails-0.59.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  61. {pycontrails-0.57.0 → pycontrails-0.59.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  62. {pycontrails-0.57.0 → pycontrails-0.59.0}/.github/dependabot.yaml +0 -0
  63. {pycontrails-0.57.0 → pycontrails-0.59.0}/.github/pull_request_template.md +0 -0
  64. {pycontrails-0.57.0 → pycontrails-0.59.0}/.github/workflows/docs.yaml +0 -0
  65. {pycontrails-0.57.0 → pycontrails-0.59.0}/.github/workflows/doctest.yaml +0 -0
  66. {pycontrails-0.57.0 → pycontrails-0.59.0}/.gitignore +0 -0
  67. {pycontrails-0.57.0 → pycontrails-0.59.0}/.pre-commit-config.yaml +0 -0
  68. {pycontrails-0.57.0 → pycontrails-0.59.0}/.zenodo.json +0 -0
  69. {pycontrails-0.57.0 → pycontrails-0.59.0}/CONTRIBUTING.md +0 -0
  70. {pycontrails-0.57.0 → pycontrails-0.59.0}/LICENSE +0 -0
  71. {pycontrails-0.57.0 → pycontrails-0.59.0}/NOTICE +0 -0
  72. {pycontrails-0.57.0 → pycontrails-0.59.0}/RELEASE.md +0 -0
  73. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/_static/css/style.css +0 -0
  74. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/_static/img/colab.png +0 -0
  75. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/_static/img/favicon.png +0 -0
  76. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/_static/img/logo-dark.png +0 -0
  77. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/_static/img/logo.png +0 -0
  78. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/_static/pycontrails.bib +0 -0
  79. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/changelog.rst +0 -0
  80. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/conf.py +0 -0
  81. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/contributing.rst +0 -0
  82. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/develop.rst +0 -0
  83. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/flight.rst +0 -0
  84. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/index.rst +0 -0
  85. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/integrations/ACCF.ipynb +0 -0
  86. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/integrations/APCEMM.ipynb +0 -0
  87. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/literature.rst +0 -0
  88. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/meteorology.rst +0 -0
  89. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/models.rst +0 -0
  90. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/ARCO-ERA5.ipynb +0 -0
  91. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/AircraftPerformance.ipynb +0 -0
  92. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/Cache.ipynb +0 -0
  93. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/CoCiP.ipynb +0 -0
  94. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/CoCiPGrid.ipynb +0 -0
  95. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/ECMWF.ipynb +0 -0
  96. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/Flight.ipynb +0 -0
  97. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/GFS.ipynb +0 -0
  98. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/Himawari.ipynb +0 -0
  99. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/ISSR.ipynb +0 -0
  100. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/Landsat.ipynb +0 -0
  101. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/Meteorology.ipynb +0 -0
  102. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/SAC.ipynb +0 -0
  103. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/Sentinel.ipynb +0 -0
  104. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/advection.ipynb +0 -0
  105. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/airports.ipynb +0 -0
  106. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/data/.gitignore +0 -0
  107. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/data/flight-ap.csv +0 -0
  108. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/data/flight-cocip.csv +0 -0
  109. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/data/flight-fdr.csv +0 -0
  110. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/data/flight-noisy.csv +0 -0
  111. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/data/flight.csv +0 -0
  112. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/data/iagos-flight-landsat.csv +0 -0
  113. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/data/iagos-flight-sentinel.csv +0 -0
  114. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/flightplan.ipynb +0 -0
  115. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/model-levels.ipynb +0 -0
  116. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/run-cocip-with-fdr.ipynb +0 -0
  117. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks/specific-humidity-interpolation.ipynb +0 -0
  118. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/notebooks.rst +0 -0
  119. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/tutorials.rst +0 -0
  120. {pycontrails-0.57.0 → pycontrails-0.59.0}/docs/utilities.rst +0 -0
  121. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/__init__.py +0 -0
  122. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/__init__.py +0 -0
  123. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/airports.py +0 -0
  124. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/coordinates.py +0 -0
  125. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/flightplan.py +0 -0
  126. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/fuel.py +0 -0
  127. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/met_var.py +0 -0
  128. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/core/models.py +0 -0
  129. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/__init__.py +0 -0
  130. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/__init__.py +0 -0
  131. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/arco_era5.py +0 -0
  132. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/era5.py +0 -0
  133. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/era5_model_level.py +0 -0
  134. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/hres_model_level.py +0 -0
  135. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/model_levels.py +1 -1
  136. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +0 -0
  137. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/ecmwf/variables.py +0 -0
  138. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/geo_utils.py +0 -0
  139. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/gfs/__init__.py +0 -0
  140. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/gfs/variables.py +0 -0
  141. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/himawari/__init__.py +0 -0
  142. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/landsat.py +0 -0
  143. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/leo_utils/__init__.py +0 -0
  144. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/leo_utils/correction.py +0 -0
  145. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/leo_utils/landsat_metadata.py +0 -0
  146. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/leo_utils/search.py +0 -0
  147. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/leo_utils/static/bq_roi_query.sql +0 -0
  148. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/leo_utils/vis.py +0 -0
  149. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/sentinel.py +0 -0
  150. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/spire/__init__.py +0 -0
  151. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/spire/exceptions.py +0 -0
  152. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/datalib/spire/spire.py +0 -0
  153. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/ext/bada.py +0 -0
  154. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/ext/cirium.py +0 -0
  155. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/ext/empirical_grid.py +0 -0
  156. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/__init__.py +0 -0
  157. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/accf.py +0 -0
  158. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/apcemm/__init__.py +0 -0
  159. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/apcemm/apcemm.py +0 -0
  160. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/apcemm/inputs.py +0 -0
  161. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/apcemm/static/apcemm_yaml_template.yaml +0 -0
  162. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/apcemm/utils.py +0 -0
  163. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/__init__.py +0 -0
  164. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/cocip.py +0 -0
  165. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/cocip_params.py +0 -0
  166. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/radiative_forcing.py +0 -0
  167. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/radiative_heating.py +0 -0
  168. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
  169. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/wake_vortex.py +0 -0
  170. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocip/wind_shear.py +0 -0
  171. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocipgrid/__init__.py +0 -0
  172. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
  173. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/emissions/__init__.py +0 -0
  174. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/emissions/black_carbon.py +0 -0
  175. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/emissions/emissions.py +0 -0
  176. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/emissions/ffm2.py +0 -0
  177. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
  178. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +0 -0
  179. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +0 -0
  180. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/humidity_scaling/__init__.py +0 -0
  181. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
  182. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
  183. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/issr.py +0 -0
  184. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/pcc.py +0 -0
  185. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/pcr.py +0 -0
  186. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/ps_model/__init__.py +0 -0
  187. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/ps_model/ps_aircraft_params.py +0 -0
  188. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/ps_model/ps_model.py +0 -0
  189. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/ps_model/ps_operational_limits.py +0 -0
  190. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/ps_model/static/ps-aircraft-params-20250328.csv +0 -0
  191. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/models/ps_model/static/ps-synonym-list-20250328.csv +0 -0
  192. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/physics/__init__.py +0 -0
  193. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/physics/constants.py +0 -0
  194. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/physics/geo.py +0 -0
  195. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/physics/jet.py +0 -0
  196. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/physics/static/iata-cargo-load-factors-20250221.csv +0 -0
  197. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/physics/static/iata-passenger-load-factors-20250221.csv +0 -0
  198. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/physics/units.py +0 -0
  199. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/py.typed +0 -0
  200. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/utils/__init__.py +0 -0
  201. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/utils/dependencies.py +0 -0
  202. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/utils/json.py +0 -0
  203. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/utils/temp.py +0 -0
  204. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails/utils/types.py +0 -0
  205. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails.egg-info/dependency_links.txt +0 -0
  206. {pycontrails-0.57.0 → pycontrails-0.59.0}/pycontrails.egg-info/top_level.txt +0 -0
  207. {pycontrails-0.57.0 → pycontrails-0.59.0}/setup.cfg +0 -0
  208. {pycontrails-0.57.0 → pycontrails-0.59.0}/setup.py +0 -0
  209. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/__init__.py +0 -0
  210. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/_deprecated.py +0 -0
  211. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/cocip/Makefile +0 -0
  212. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/cocip/README.md +0 -0
  213. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/cocip/benchmark.py +0 -0
  214. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/cocip/compare.py +0 -0
  215. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/cocip/data.md +0 -0
  216. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/cocip/output.py +0 -0
  217. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/cocip/review.ipynb +0 -0
  218. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/cocip-fortran/README.md +0 -0
  219. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
  220. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/north-atlantic-study/README.md +0 -0
  221. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/north-atlantic-study/support.py +0 -0
  222. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/benchmark/north-atlantic-study/validate.py +0 -0
  223. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/fixtures/cocip-met.py +0 -0
  224. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/fixtures/cocip-met2.py +0 -0
  225. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/fixtures/ecmwf-met.py +0 -0
  226. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/fixtures/gfs-met.py +0 -0
  227. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/__init__.py +0 -0
  228. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/conftest.py +0 -0
  229. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
  230. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/cocip-contrail-output.json +0 -0
  231. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/cocip-contrail-output2.json +0 -0
  232. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/cocip-flight-output.json +0 -0
  233. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/cocip-flight-output2.json +0 -0
  234. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
  235. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
  236. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/flight-cocip2.csv +0 -0
  237. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/flight-meridian.csv +0 -0
  238. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/flight-metadata.json +0 -0
  239. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
  240. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/flight.csv +0 -0
  241. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
  242. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/met-20190101-eu.nc +0 -0
  243. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/met-accf-pl.nc +0 -0
  244. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/met-accf-sl.nc +0 -0
  245. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/met-ecmwf-lnsp.nc +0 -0
  246. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/met-ecmwf-ml.nc +0 -0
  247. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/met-ecmwf-pl.nc +0 -0
  248. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/met-ecmwf-sl.nc +0 -0
  249. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/met-era5-cocip1.nc +0 -0
  250. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/met-era5-cocip2.nc +0 -0
  251. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/met-gfs.nc +0 -0
  252. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/polygon-bug.nc +0 -0
  253. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/rad-20190101-eu.nc +0 -0
  254. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/rad-era5-cocip1.nc +0 -0
  255. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/rad-era5-cocip2.nc +0 -0
  256. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/static/rad-gfs.nc +0 -0
  257. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_accf.py +0 -0
  258. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_airports.py +0 -0
  259. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_apcemm.py +0 -0
  260. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_cache.py +0 -0
  261. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_cocip_grid.py +0 -0
  262. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_cocip_grid_parity.py +0 -0
  263. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_cocip_radiative_forcing.py +0 -0
  264. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_cocip_uncertainty.py +0 -0
  265. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_coordinates.py +0 -0
  266. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_datalib_metsource.py +0 -0
  267. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_dry_advection.py +0 -0
  268. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_ecmwf.py +0 -0
  269. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_emissions.py +0 -0
  270. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_fleet.py +0 -0
  271. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_flight.py +0 -0
  272. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_flightplan.py +0 -0
  273. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_fuel.py +0 -0
  274. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_geo.py +0 -0
  275. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_gfs.py +0 -0
  276. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_himawari.py +0 -0
  277. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_humidity_scaling.py +0 -0
  278. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_init.py +0 -0
  279. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_leo.py +0 -0
  280. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_met_cache.py +0 -0
  281. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_models.py +0 -0
  282. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_pcc.py +0 -0
  283. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_polygons.py +0 -0
  284. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_ps_model.py +0 -0
  285. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_sac_issr.py +0 -0
  286. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_spire.py +0 -0
  287. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_tau_cirrus.py +0 -0
  288. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_thermo_sac.py +0 -0
  289. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_units.py +0 -0
  290. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
  291. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_utils.py +0 -0
  292. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_vector.py +0 -0
  293. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_vpm.py +0 -0
  294. {pycontrails-0.57.0 → pycontrails-0.59.0}/tests/unit/test_zarr.py +0 -0
@@ -42,11 +42,11 @@ jobs:
42
42
  - name: Build wheels
43
43
  uses: pypa/cibuildwheel@v3.2
44
44
  env:
45
- CIBW_BUILD: cp310-* cp311-* cp312-* cp313-*
45
+ CIBW_BUILD: cp311-* cp312-* cp313-* cp314-*
46
46
  CIBW_SKIP: '*-win32 *-manylinux_i686 *-musllinux*'
47
47
  CIBW_BUILD_VERBOSITY: 3
48
48
  CIBW_ARCHS_MACOS: x86_64 arm64
49
- CIBW_TEST_SKIP: '*-macosx_arm64'
49
+ CIBW_TEST_SKIP: '*-macosx_arm64 cp314-*'
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"
@@ -30,7 +30,7 @@ jobs:
30
30
  - uses: actions/checkout@v5
31
31
 
32
32
  - name: Run OpenSSF Security Scorecard
33
- uses: ossf/scorecard-action@v2.4.2
33
+ uses: ossf/scorecard-action@v2.4.3
34
34
  with:
35
35
  results_file: results.sarif
36
36
  results_format: sarif
@@ -38,6 +38,6 @@ jobs:
38
38
 
39
39
  # required for Code scanning alerts
40
40
  - name: "Upload SARIF results to code scanning"
41
- uses: github/codeql-action/upload-sarif@v3
41
+ uses: github/codeql-action/upload-sarif@v4
42
42
  with:
43
43
  sarif_file: results.sarif
@@ -38,7 +38,7 @@ jobs:
38
38
  fail-fast: false
39
39
  matrix:
40
40
  os: [ubuntu-latest, windows-latest]
41
- pyversion: ['3.10', '3.11', '3.12', '3.13']
41
+ pyversion: ['3.11', '3.12', '3.13']
42
42
  runs-on: ${{ matrix.os }}
43
43
 
44
44
  steps:
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.59.0
4
+
5
+ ### Features
6
+
7
+ - Add lightweight `GRUAN` datalib for accessing GRUAN radiosonde data via FTP. See the [GRUAN notebook](https://py.contrails.org/notebooks/GRUAN.html) for usage examples.
8
+
9
+ ### Breaking changes
10
+
11
+ - Updated error handling in `goes.gcs_goes_path` to raise a `FileNotFoundError` if any of the requested bands are not available. Previous versions raised a `RuntimeError` only in cases where no requested bands were available.
12
+
13
+ ### Fixes
14
+
15
+ - Ensure call to `np.clip` in `contrail_properties.initial_ice_particle_number` is backwards compatible with numpy < 2.1.
16
+
17
+ ## 0.58.0
18
+
19
+ ### Features
20
+
21
+ - Build wheels for python 3.14. These are not yet tested in the CI (not all dependencies support python 3.14 yet).
22
+
23
+ ### Breaking changes
24
+
25
+ - Drop support for python 3.10 per [NEP 29](https://numpy.org/neps/nep-0029-deprecation_policy.html).
26
+ - Require scipy >= 1.12 to better support the `PycontrailsRegularGridInterpolator` interface.
27
+
28
+ ### Fixes
29
+
30
+ - When instantiated with `copy=True`, `MetDataset` and `MetDataArray` now remove duplicate dimension values, preserving only the first occurrence of each. Previously, duplicates were silently retained (such duplicates are not expected with typical gridded weather data). With `copy=False`, a `ValueError` is raised if duplicate dimension values are present.
31
+ - Update `PycontrailsRegularGridInterpolator` for improved compatibility with `scipy.interpolate.RegularGridInterpolator`. All methods now delegate to SciPy’s implementation, except for `method="linear"`, which retains a fast-path optimized in `PycontrailsRegularGridInterpolator`.
32
+
3
33
  ## 0.57.0
4
34
 
5
35
  ### Features
@@ -205,6 +205,7 @@ nb-test: ensure-era5-cached nb-clean-check nb-format-check nb-check-links
205
205
  --ignore=docs/notebooks/model-levels.ipynb \
206
206
  --ignore=docs/notebooks/ARCO-ERA5.ipynb \
207
207
  --ignore=docs/notebooks/Sentinel.ipynb \
208
+ --ignore=docs/notebooks/GRUAN.ipynb \
208
209
  docs/notebooks docs/integrations
209
210
 
210
211
  # Check for broken links in notebooks
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pycontrails
3
- Version: 0.57.0
3
+ Version: 0.59.0
4
4
  Summary: Python library for modeling aviation climate impacts
5
5
  Author-email: "Contrails.org" <py@contrails.org>
6
6
  License-Expression: Apache-2.0
@@ -13,29 +13,28 @@ Classifier: Development Status :: 4 - Beta
13
13
  Classifier: Intended Audience :: Science/Research
14
14
  Classifier: Operating System :: OS Independent
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
17
  Classifier: Programming Language :: Python :: 3.12
19
18
  Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
20
  Classifier: Programming Language :: Python :: 3 :: Only
21
21
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
22
  Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
23
23
  Classifier: Topic :: Scientific/Engineering :: GIS
24
24
  Classifier: Typing :: Typed
25
- Requires-Python: >=3.10
25
+ Requires-Python: >=3.11
26
26
  Description-Content-Type: text/markdown
27
27
  License-File: LICENSE
28
28
  License-File: NOTICE
29
29
  Requires-Dist: dask>=2022.3
30
30
  Requires-Dist: numpy>=1.22
31
31
  Requires-Dist: pandas>=2.0
32
- Requires-Dist: scipy>=1.10
32
+ Requires-Dist: scipy>=1.12
33
33
  Requires-Dist: typing-extensions>=4.5; python_version < "3.12"
34
34
  Requires-Dist: xarray>=2022.3
35
35
  Provides-Extra: complete
36
36
  Requires-Dist: pycontrails[ecmwf,gcp,gfs,jupyter,pyproj,sat,vis,zarr]; extra == "complete"
37
37
  Provides-Extra: dev
38
- Requires-Dist: fastparquet>=0.8; extra == "dev"
39
38
  Requires-Dist: ipdb>=0.13; extra == "dev"
40
39
  Requires-Dist: memory_profiler; extra == "dev"
41
40
  Requires-Dist: mypy>=1.8; extra == "dev"
@@ -140,7 +139,7 @@ Documentation and examples available at [py.contrails.org](https://py.contrails.
140
139
 
141
140
  ### Install with pip
142
141
 
143
- You can install pycontrails from PyPI with `pip` (Python 3.10 or later required):
142
+ You can install pycontrails from PyPI with `pip` (Python 3.11 or later required):
144
143
 
145
144
  ```bash
146
145
  $ pip install pycontrails
@@ -25,7 +25,7 @@ Documentation and examples available at [py.contrails.org](https://py.contrails.
25
25
 
26
26
  ### Install with pip
27
27
 
28
- You can install pycontrails from PyPI with `pip` (Python 3.10 or later required):
28
+ You can install pycontrails from PyPI with `pip` (Python 3.11 or later required):
29
29
 
30
30
  ```bash
31
31
  $ pip install pycontrails
@@ -83,13 +83,15 @@ ARCO ERA5
83
83
  datalib.ecmwf.arco_era5
84
84
 
85
85
 
86
- GOES
87
- """"
86
+ Geostationary Satellites
87
+ """"""""""""""""""""""""
88
88
 
89
89
  .. autosummary::
90
90
  :toctree: api/
91
91
 
92
92
  datalib.goes
93
+ datalib.himawari
94
+ datalib.geo_utils
93
95
 
94
96
 
95
97
  Low Earth Orbit Satellites
@@ -105,6 +107,14 @@ Low Earth Orbit Satellites
105
107
  datalib.leo_utils.sentinel_metadata
106
108
 
107
109
 
110
+ GRUAN Radiosondes
111
+ """""""""""""""""
112
+ .. autosummary::
113
+ :toctree: api/
114
+
115
+ datalib.gruan.GRUAN
116
+
117
+
108
118
  Models
109
119
  ------
110
120
 
@@ -17,7 +17,7 @@ The conda-forge package includes all optional runtime dependencies.
17
17
  pip install
18
18
  -----------
19
19
 
20
- With Python 3.10 or later, install the latest release from PyPI using ``pip``:
20
+ With Python 3.11 or later, install the latest release from PyPI using ``pip``:
21
21
 
22
22
  .. code-block:: bash
23
23
 
@@ -27,7 +27,8 @@ With Python 3.10 or later, install the latest release from PyPI using ``pip``:
27
27
  # install with all optional dependencies
28
28
  $ pip install "pycontrails[complete]"
29
29
 
30
- Wheels are currently built and tested for python 3.10 - 3.13 on Linux, macOS, and Windows.
30
+ Wheels are currently built for python 3.11 - 3.14 and tested for
31
+ python 3.11 - 3.13 on Linux, macOS, and Windows.
31
32
 
32
33
  Install the latest development version directly from GitHub:
33
34
 
@@ -30,7 +30,7 @@
30
30
  "\n",
31
31
  "By default, any GOES data will be cached on disk. Set `cachestore=None` to disable caching when defining the `GOES` object.\n",
32
32
  "\n",
33
- "We download data for channels 1, 2, and 3. These are needed for creating a true color image."
33
+ "We download data for bands 1, 2, and 3. These are needed for creating a true color image."
34
34
  ]
35
35
  },
36
36
  {
@@ -692,7 +692,7 @@
692
692
  }
693
693
  ],
694
694
  "source": [
695
- "handler = goes.GOES(region=\"conus\", channels=(\"C01\", \"C02\", \"C03\"))\n",
695
+ "handler = goes.GOES(region=\"conus\", bands=(\"C01\", \"C02\", \"C03\"))\n",
696
696
  "\n",
697
697
  "# Download the data\n",
698
698
  "da = handler.get(\"2023-02-05T18:00:00\")\n",
@@ -3849,7 +3849,7 @@
3849
3849
  "\n",
3850
3850
  "The ash color scheme was originally developed to visualize volcanic ash. It is also useful for visualizing contrails.\n",
3851
3851
  "\n",
3852
- "We download data for channels 11, 14, and 15 to create an ash color image."
3852
+ "We download data for bands 11, 14, and 15 to create an ash color image."
3853
3853
  ]
3854
3854
  },
3855
3855
  {
@@ -3858,7 +3858,7 @@
3858
3858
  "metadata": {},
3859
3859
  "outputs": [],
3860
3860
  "source": [
3861
- "handler = goes.GOES(region=\"conus\", channels=(\"C11\", \"C14\", \"C15\"))\n",
3861
+ "handler = goes.GOES(region=\"conus\", bands=(\"C11\", \"C14\", \"C15\"))\n",
3862
3862
  "da = handler.get(\"2023-02-09T18:00:00\")\n",
3863
3863
  "\n",
3864
3864
  "rgb, src_crs, src_extent = goes.extract_visualization(da, color_scheme=\"ash\")"