pycontrails 0.56.0__tar.gz → 0.58.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 (291) hide show
  1. {pycontrails-0.56.0 → pycontrails-0.58.0}/.github/workflows/release.yaml +3 -3
  2. {pycontrails-0.56.0 → pycontrails-0.58.0}/.github/workflows/test.yaml +1 -1
  3. {pycontrails-0.56.0 → pycontrails-0.58.0}/CHANGELOG.md +35 -0
  4. {pycontrails-0.56.0/pycontrails.egg-info → pycontrails-0.58.0}/PKG-INFO +6 -6
  5. {pycontrails-0.56.0 → pycontrails-0.58.0}/README.md +1 -1
  6. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/api.rst +4 -2
  7. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/install.rst +3 -2
  8. pycontrails-0.58.0/docs/notebooks/GOES.ipynb +3918 -0
  9. pycontrails-0.58.0/docs/notebooks/Himawari.ipynb +837 -0
  10. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/observations.rst +7 -1
  11. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/_version.py +3 -3
  12. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/aircraft_performance.py +1 -1
  13. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/cache.py +2 -2
  14. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/fleet.py +2 -7
  15. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/flight.py +2 -7
  16. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/interpolation.py +42 -64
  17. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/met.py +36 -16
  18. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/polygon.py +3 -3
  19. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/rgi_cython.c +595 -2108
  20. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/rgi_cython.pyx +0 -144
  21. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/vector.py +3 -8
  22. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/_met_utils/metsource.py +4 -7
  23. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/common.py +2 -2
  24. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/hres.py +2 -2
  25. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/ifs.py +1 -1
  26. pycontrails-0.58.0/pycontrails/datalib/geo_utils.py +261 -0
  27. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/gfs/gfs.py +59 -65
  28. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/goes.py +193 -399
  29. pycontrails-0.58.0/pycontrails/datalib/himawari/__init__.py +27 -0
  30. pycontrails-0.58.0/pycontrails/datalib/himawari/header_struct.py +266 -0
  31. pycontrails-0.58.0/pycontrails/datalib/himawari/himawari.py +667 -0
  32. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/leo_utils/sentinel_metadata.py +9 -9
  33. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/ext/synthetic_flight.py +2 -2
  34. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/cocip_uncertainty.py +1 -1
  35. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/contrail_properties.py +1 -1
  36. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/output_formats.py +1 -1
  37. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocipgrid/cocip_grid.py +3 -3
  38. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/dry_advection.py +1 -1
  39. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/extended_k15.py +4 -4
  40. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/humidity_scaling/humidity_scaling.py +2 -2
  41. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/ps_model/ps_grid.py +2 -2
  42. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/sac.py +1 -1
  43. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/tau_cirrus.py +1 -1
  44. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/physics/thermo.py +1 -1
  45. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/utils/iteration.py +1 -1
  46. {pycontrails-0.56.0 → pycontrails-0.58.0/pycontrails.egg-info}/PKG-INFO +6 -6
  47. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails.egg-info/SOURCES.txt +6 -0
  48. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails.egg-info/requires.txt +2 -2
  49. {pycontrails-0.56.0 → pycontrails-0.58.0}/pyproject.toml +24 -9
  50. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_dtypes.py +2 -2
  51. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_goes.py +17 -20
  52. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_grid_to_netcdf.py +1 -1
  53. pycontrails-0.58.0/tests/unit/test_himawari.py +117 -0
  54. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_interpolation.py +7 -9
  55. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_met.py +20 -0
  56. pycontrails-0.56.0/docs/notebooks/GOES.ipynb +0 -3842
  57. {pycontrails-0.56.0 → pycontrails-0.58.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  58. {pycontrails-0.56.0 → pycontrails-0.58.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  59. {pycontrails-0.56.0 → pycontrails-0.58.0}/.github/dependabot.yaml +0 -0
  60. {pycontrails-0.56.0 → pycontrails-0.58.0}/.github/pull_request_template.md +0 -0
  61. {pycontrails-0.56.0 → pycontrails-0.58.0}/.github/workflows/docs.yaml +0 -0
  62. {pycontrails-0.56.0 → pycontrails-0.58.0}/.github/workflows/doctest.yaml +0 -0
  63. {pycontrails-0.56.0 → pycontrails-0.58.0}/.github/workflows/scorecard.yaml +0 -0
  64. {pycontrails-0.56.0 → pycontrails-0.58.0}/.gitignore +0 -0
  65. {pycontrails-0.56.0 → pycontrails-0.58.0}/.pre-commit-config.yaml +0 -0
  66. {pycontrails-0.56.0 → pycontrails-0.58.0}/.zenodo.json +0 -0
  67. {pycontrails-0.56.0 → pycontrails-0.58.0}/CONTRIBUTING.md +0 -0
  68. {pycontrails-0.56.0 → pycontrails-0.58.0}/LICENSE +0 -0
  69. {pycontrails-0.56.0 → pycontrails-0.58.0}/Makefile +0 -0
  70. {pycontrails-0.56.0 → pycontrails-0.58.0}/NOTICE +0 -0
  71. {pycontrails-0.56.0 → pycontrails-0.58.0}/RELEASE.md +0 -0
  72. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/_static/css/style.css +0 -0
  73. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/_static/img/colab.png +0 -0
  74. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/_static/img/favicon.png +0 -0
  75. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/_static/img/logo-dark.png +0 -0
  76. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/_static/img/logo.png +0 -0
  77. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/_static/pycontrails.bib +0 -0
  78. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/changelog.rst +0 -0
  79. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/conf.py +0 -0
  80. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/contributing.rst +0 -0
  81. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/develop.rst +0 -0
  82. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/flight.rst +0 -0
  83. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/index.rst +0 -0
  84. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/integrations/ACCF.ipynb +0 -0
  85. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/integrations/APCEMM.ipynb +0 -0
  86. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/literature.rst +0 -0
  87. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/meteorology.rst +0 -0
  88. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/models.rst +0 -0
  89. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/ARCO-ERA5.ipynb +0 -0
  90. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/AircraftPerformance.ipynb +0 -0
  91. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/Cache.ipynb +0 -0
  92. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/CoCiP.ipynb +0 -0
  93. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/CoCiPGrid.ipynb +0 -0
  94. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/ECMWF.ipynb +0 -0
  95. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/Flight.ipynb +0 -0
  96. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/GFS.ipynb +0 -0
  97. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/ISSR.ipynb +0 -0
  98. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/Landsat.ipynb +0 -0
  99. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/Meteorology.ipynb +0 -0
  100. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/SAC.ipynb +0 -0
  101. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/Sentinel.ipynb +0 -0
  102. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/advection.ipynb +0 -0
  103. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/airports.ipynb +0 -0
  104. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/data/.gitignore +0 -0
  105. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/data/flight-ap.csv +0 -0
  106. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/data/flight-cocip.csv +0 -0
  107. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/data/flight-fdr.csv +0 -0
  108. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/data/flight-noisy.csv +0 -0
  109. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/data/flight.csv +0 -0
  110. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/data/iagos-flight-landsat.csv +0 -0
  111. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/data/iagos-flight-sentinel.csv +0 -0
  112. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/flightplan.ipynb +0 -0
  113. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/model-levels.ipynb +0 -0
  114. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/run-cocip-on-flight.ipynb +0 -0
  115. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/run-cocip-with-fdr.ipynb +0 -0
  116. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks/specific-humidity-interpolation.ipynb +0 -0
  117. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/notebooks.rst +0 -0
  118. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/tutorials.rst +0 -0
  119. {pycontrails-0.56.0 → pycontrails-0.58.0}/docs/utilities.rst +0 -0
  120. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/__init__.py +0 -0
  121. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/__init__.py +0 -0
  122. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/airports.py +0 -0
  123. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/coordinates.py +0 -0
  124. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/flightplan.py +0 -0
  125. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/fuel.py +0 -0
  126. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/met_var.py +0 -0
  127. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/core/models.py +0 -0
  128. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/__init__.py +0 -0
  129. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/__init__.py +0 -0
  130. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/arco_era5.py +0 -0
  131. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/era5.py +0 -0
  132. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/era5_model_level.py +0 -0
  133. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/hres_model_level.py +0 -0
  134. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/model_levels.py +0 -0
  135. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +0 -0
  136. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/ecmwf/variables.py +0 -0
  137. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/gfs/__init__.py +0 -0
  138. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/gfs/variables.py +0 -0
  139. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/landsat.py +0 -0
  140. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/leo_utils/__init__.py +0 -0
  141. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/leo_utils/correction.py +0 -0
  142. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/leo_utils/landsat_metadata.py +0 -0
  143. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/leo_utils/search.py +0 -0
  144. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/leo_utils/static/bq_roi_query.sql +0 -0
  145. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/leo_utils/vis.py +0 -0
  146. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/sentinel.py +0 -0
  147. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/spire/__init__.py +0 -0
  148. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/spire/exceptions.py +0 -0
  149. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/datalib/spire/spire.py +0 -0
  150. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/ext/bada.py +0 -0
  151. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/ext/cirium.py +0 -0
  152. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/ext/empirical_grid.py +0 -0
  153. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/__init__.py +0 -0
  154. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/accf.py +0 -0
  155. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/apcemm/__init__.py +0 -0
  156. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/apcemm/apcemm.py +0 -0
  157. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/apcemm/inputs.py +0 -0
  158. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/apcemm/static/apcemm_yaml_template.yaml +0 -0
  159. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/apcemm/utils.py +0 -0
  160. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/__init__.py +0 -0
  161. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/cocip.py +0 -0
  162. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/cocip_params.py +0 -0
  163. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/radiative_forcing.py +0 -0
  164. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/radiative_heating.py +0 -0
  165. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
  166. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/wake_vortex.py +0 -0
  167. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocip/wind_shear.py +0 -0
  168. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocipgrid/__init__.py +0 -0
  169. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
  170. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/emissions/__init__.py +0 -0
  171. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/emissions/black_carbon.py +0 -0
  172. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/emissions/emissions.py +0 -0
  173. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/emissions/ffm2.py +0 -0
  174. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
  175. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +0 -0
  176. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +0 -0
  177. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/humidity_scaling/__init__.py +0 -0
  178. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
  179. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
  180. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/issr.py +0 -0
  181. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/pcc.py +0 -0
  182. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/pcr.py +0 -0
  183. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/ps_model/__init__.py +0 -0
  184. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/ps_model/ps_aircraft_params.py +0 -0
  185. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/ps_model/ps_model.py +0 -0
  186. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/ps_model/ps_operational_limits.py +0 -0
  187. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/ps_model/static/ps-aircraft-params-20250328.csv +0 -0
  188. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/models/ps_model/static/ps-synonym-list-20250328.csv +0 -0
  189. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/physics/__init__.py +0 -0
  190. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/physics/constants.py +0 -0
  191. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/physics/geo.py +0 -0
  192. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/physics/jet.py +0 -0
  193. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/physics/static/iata-cargo-load-factors-20250221.csv +0 -0
  194. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/physics/static/iata-passenger-load-factors-20250221.csv +0 -0
  195. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/physics/units.py +0 -0
  196. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/py.typed +0 -0
  197. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/utils/__init__.py +0 -0
  198. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/utils/dependencies.py +0 -0
  199. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/utils/json.py +0 -0
  200. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/utils/temp.py +0 -0
  201. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails/utils/types.py +0 -0
  202. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails.egg-info/dependency_links.txt +0 -0
  203. {pycontrails-0.56.0 → pycontrails-0.58.0}/pycontrails.egg-info/top_level.txt +0 -0
  204. {pycontrails-0.56.0 → pycontrails-0.58.0}/setup.cfg +0 -0
  205. {pycontrails-0.56.0 → pycontrails-0.58.0}/setup.py +0 -0
  206. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/__init__.py +0 -0
  207. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/_deprecated.py +0 -0
  208. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/cocip/Makefile +0 -0
  209. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/cocip/README.md +0 -0
  210. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/cocip/benchmark.py +0 -0
  211. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/cocip/compare.py +0 -0
  212. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/cocip/data.md +0 -0
  213. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/cocip/output.py +0 -0
  214. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/cocip/review.ipynb +0 -0
  215. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/cocip-fortran/README.md +0 -0
  216. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
  217. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/north-atlantic-study/README.md +0 -0
  218. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/north-atlantic-study/support.py +0 -0
  219. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/benchmark/north-atlantic-study/validate.py +0 -0
  220. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/fixtures/cocip-met.py +0 -0
  221. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/fixtures/cocip-met2.py +0 -0
  222. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/fixtures/ecmwf-met.py +0 -0
  223. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/fixtures/gfs-met.py +0 -0
  224. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/__init__.py +0 -0
  225. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/conftest.py +0 -0
  226. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
  227. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/cocip-contrail-output.json +0 -0
  228. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/cocip-contrail-output2.json +0 -0
  229. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/cocip-flight-output.json +0 -0
  230. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/cocip-flight-output2.json +0 -0
  231. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
  232. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
  233. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/flight-cocip2.csv +0 -0
  234. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/flight-meridian.csv +0 -0
  235. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/flight-metadata.json +0 -0
  236. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
  237. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/flight.csv +0 -0
  238. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
  239. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/met-20190101-eu.nc +0 -0
  240. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/met-accf-pl.nc +0 -0
  241. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/met-accf-sl.nc +0 -0
  242. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/met-ecmwf-lnsp.nc +0 -0
  243. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/met-ecmwf-ml.nc +0 -0
  244. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/met-ecmwf-pl.nc +0 -0
  245. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/met-ecmwf-sl.nc +0 -0
  246. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/met-era5-cocip1.nc +0 -0
  247. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/met-era5-cocip2.nc +0 -0
  248. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/met-gfs.nc +0 -0
  249. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/polygon-bug.nc +0 -0
  250. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/rad-20190101-eu.nc +0 -0
  251. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/rad-era5-cocip1.nc +0 -0
  252. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/rad-era5-cocip2.nc +0 -0
  253. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/static/rad-gfs.nc +0 -0
  254. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_accf.py +0 -0
  255. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_airports.py +0 -0
  256. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_apcemm.py +0 -0
  257. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_cache.py +0 -0
  258. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_cocip.py +0 -0
  259. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_cocip_grid.py +0 -0
  260. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_cocip_grid_parity.py +0 -0
  261. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_cocip_radiative_forcing.py +0 -0
  262. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_cocip_uncertainty.py +0 -0
  263. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_coordinates.py +0 -0
  264. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_datalib_metsource.py +0 -0
  265. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_dry_advection.py +0 -0
  266. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_ecmwf.py +0 -0
  267. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_emissions.py +0 -0
  268. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_fleet.py +0 -0
  269. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_flight.py +0 -0
  270. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_flightplan.py +0 -0
  271. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_fuel.py +0 -0
  272. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_geo.py +0 -0
  273. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_gfs.py +0 -0
  274. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_humidity_scaling.py +0 -0
  275. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_init.py +0 -0
  276. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_leo.py +0 -0
  277. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_met_cache.py +0 -0
  278. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_models.py +0 -0
  279. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_pcc.py +0 -0
  280. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_polygons.py +0 -0
  281. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_ps_model.py +0 -0
  282. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_sac_issr.py +0 -0
  283. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_spire.py +0 -0
  284. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_tau_cirrus.py +0 -0
  285. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_thermo_sac.py +0 -0
  286. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_units.py +0 -0
  287. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
  288. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_utils.py +0 -0
  289. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_vector.py +0 -0
  290. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_vpm.py +0 -0
  291. {pycontrails-0.56.0 → pycontrails-0.58.0}/tests/unit/test_zarr.py +0 -0
@@ -40,13 +40,13 @@ jobs:
40
40
 
41
41
  # https://cibuildwheel.readthedocs.io/en/stable/options/#testing
42
42
  - name: Build wheels
43
- uses: pypa/cibuildwheel@v3.1
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"
@@ -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,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.58.0
4
+
5
+ ### Features
6
+
7
+ - Build wheels for python 3.14. These are not yet tested in the CI (not all dependencies support python 3.14 yet).
8
+
9
+ ### Breaking changes
10
+
11
+ - Drop support for python 3.10 per [NEP 29](https://numpy.org/neps/nep-0029-deprecation_policy.html).
12
+ - Require scipy >= 1.12 to better support the `PycontrailsRegularGridInterpolator` interface.
13
+
14
+ ### Fixes
15
+
16
+ - 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.
17
+ - 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`.
18
+
19
+ ## 0.57.0
20
+
21
+ ### Features
22
+
23
+ - Add new `Himawari` interface for downloading, processing, and visualizing [Himawari-8 and Himawari-9](https://www.jma.go.jp/jma/jma-eng/satellite/introduction.html) imagery. See the [Himawari notebook](https://py.contrails.org/notebooks/Himawari.html) for usage examples.
24
+
25
+ ### Breaking changes
26
+
27
+ - Deprecate the `channels` parameter in `GOES.__init__` in favor of `bands`, aligning with the new `Himawari` interface. The `channels` parameter is still available as an alias for `bands`, but will be removed in a future release.
28
+ - Deprecate the `goes_bucket` parameter in `GOES.__init__` in favor of `bucket`, aligning with the new `Himawari` interface. The `goes_bucket` parameter is still available as an alias for `bucket`, but will be removed in a future release.
29
+
30
+ ### Internals
31
+
32
+ - Add a new `pycontrails.datalib.geo_utils` module with tools for working with geostationary satellite imagery. This module currently includes functions previously defined in the `goes` module, but are also applicable to Himawari imagery.
33
+ - Rename `goes.extract_goes_visualization` -> `goes.extract_visualization` for consistency with the new `himawari` module. The old name is still available as an alias.
34
+ - Localize the `cartopy` import to the `extract_visualization` function within the `goes` module. This allows the user to download `GOES` imagery without having `cartopy` installed.
35
+ - Tweak some of the internal logic in `GOES.get` to slightly improve performance and readability, and to avoid loading unnecessary cached data into memory.
36
+ - Replace `boto3` with `s3fs` in the `gfs` module.
37
+
3
38
  ## 0.56.0
4
39
 
5
40
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pycontrails
3
- Version: 0.56.0
3
+ Version: 0.58.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,23 +13,23 @@ 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
@@ -74,7 +74,6 @@ Requires-Dist: google-cloud-storage>=2.1; extra == "gcp"
74
74
  Requires-Dist: platformdirs>=3.0; extra == "gcp"
75
75
  Requires-Dist: tqdm>=4.61; extra == "gcp"
76
76
  Provides-Extra: gfs
77
- Requires-Dist: boto3>=1.20; extra == "gfs"
78
77
  Requires-Dist: cfgrib>=0.9; extra == "gfs"
79
78
  Requires-Dist: eccodes>=2.38; extra == "gfs"
80
79
  Requires-Dist: netcdf4>=1.6.1; extra == "gfs"
@@ -94,6 +93,7 @@ Requires-Dist: google-cloud-bigquery-storage>=2.25; extra == "sat"
94
93
  Requires-Dist: pillow>=10.3; extra == "sat"
95
94
  Requires-Dist: pyproj>=3.5; extra == "sat"
96
95
  Requires-Dist: rasterio>=1.3; extra == "sat"
96
+ Requires-Dist: s3fs>=2022.3; extra == "sat"
97
97
  Requires-Dist: scikit-image>=0.18; extra == "sat"
98
98
  Requires-Dist: shapely>=2.0; extra == "sat"
99
99
  Provides-Extra: open3d
@@ -140,7 +140,7 @@ Documentation and examples available at [py.contrails.org](https://py.contrails.
140
140
 
141
141
  ### Install with pip
142
142
 
143
- You can install pycontrails from PyPI with `pip` (Python 3.10 or later required):
143
+ You can install pycontrails from PyPI with `pip` (Python 3.11 or later required):
144
144
 
145
145
  ```bash
146
146
  $ 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
@@ -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