pycontrails 0.47.3__tar.gz → 0.48.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pycontrails might be problematic. Click here for more details.

Files changed (238) hide show
  1. {pycontrails-0.47.3 → pycontrails-0.48.1}/.github/workflows/docs.yaml +1 -1
  2. {pycontrails-0.47.3 → pycontrails-0.48.1}/.github/workflows/doctest.yaml +1 -1
  3. {pycontrails-0.47.3 → pycontrails-0.48.1}/.github/workflows/release.yaml +1 -1
  4. {pycontrails-0.47.3 → pycontrails-0.48.1}/.github/workflows/scorecard.yaml +1 -1
  5. {pycontrails-0.47.3 → pycontrails-0.48.1}/.github/workflows/test.yaml +1 -3
  6. {pycontrails-0.47.3 → pycontrails-0.48.1}/.gitignore +2 -0
  7. {pycontrails-0.47.3 → pycontrails-0.48.1}/CHANGELOG.md +62 -0
  8. {pycontrails-0.47.3/pycontrails.egg-info → pycontrails-0.48.1}/PKG-INFO +2 -2
  9. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/api.rst +1 -0
  10. pycontrails-0.48.1/docs/examples/ACCF.ipynb +833 -0
  11. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/ISSR.ipynb +72 -61
  12. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/SAC.ipynb +25 -17
  13. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/__init__.py +2 -2
  14. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/_version.py +2 -2
  15. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/coordinates.py +17 -10
  16. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/datalib.py +155 -113
  17. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/flight.py +45 -28
  18. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/met.py +163 -39
  19. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/met_var.py +9 -9
  20. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/models.py +27 -0
  21. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/rgi_cython.c +283 -203
  22. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/vector.py +257 -33
  23. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/ecmwf/common.py +14 -65
  24. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/ecmwf/era5.py +22 -27
  25. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/ecmwf/hres.py +53 -88
  26. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/ecmwf/ifs.py +10 -2
  27. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/gfs/gfs.py +68 -106
  28. pycontrails-0.48.1/pycontrails/models/accf.py +406 -0
  29. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocip/cocip.py +205 -105
  30. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocip/cocip_params.py +0 -4
  31. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocip/wake_vortex.py +9 -7
  32. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocipgrid/cocip_grid.py +2 -6
  33. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/issr.py +29 -31
  34. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/pcr.py +5 -12
  35. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/sac.py +24 -27
  36. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/tau_cirrus.py +22 -5
  37. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/utils/types.py +1 -1
  38. {pycontrails-0.47.3 → pycontrails-0.48.1/pycontrails.egg-info}/PKG-INFO +2 -2
  39. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails.egg-info/requires.txt +3 -1
  40. {pycontrails-0.47.3 → pycontrails-0.48.1}/pyproject.toml +7 -3
  41. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/conftest.py +53 -45
  42. pycontrails-0.48.1/tests/unit/test_accf.py +60 -0
  43. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_cocip.py +51 -24
  44. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_datalib.py +4 -9
  45. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_dtypes.py +5 -3
  46. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_ecmwf.py +83 -11
  47. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_fleet.py +6 -4
  48. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_flight.py +128 -20
  49. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_gfs.py +31 -18
  50. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_grid_to_netcdf.py +23 -17
  51. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_met.py +79 -2
  52. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_pcc.py +12 -14
  53. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_sac_issr.py +54 -50
  54. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_vector.py +45 -8
  55. pycontrails-0.47.3/docs/examples/ACCF.ipynb +0 -821
  56. pycontrails-0.47.3/pycontrails/models/accf.py +0 -379
  57. pycontrails-0.47.3/tests/unit/test_accf.py +0 -52
  58. {pycontrails-0.47.3 → pycontrails-0.48.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  59. {pycontrails-0.47.3 → pycontrails-0.48.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  60. {pycontrails-0.47.3 → pycontrails-0.48.1}/.github/dependabot.yaml +0 -0
  61. {pycontrails-0.47.3 → pycontrails-0.48.1}/.github/pull_request_template.md +0 -0
  62. {pycontrails-0.47.3 → pycontrails-0.48.1}/.github/workflows/benchmark.yaml +0 -0
  63. {pycontrails-0.47.3 → pycontrails-0.48.1}/.pre-commit-config.yaml +0 -0
  64. {pycontrails-0.47.3 → pycontrails-0.48.1}/.zenodo.json +0 -0
  65. {pycontrails-0.47.3 → pycontrails-0.48.1}/CONTRIBUTING.md +0 -0
  66. {pycontrails-0.47.3 → pycontrails-0.48.1}/LICENSE +0 -0
  67. {pycontrails-0.47.3 → pycontrails-0.48.1}/Makefile +0 -0
  68. {pycontrails-0.47.3 → pycontrails-0.48.1}/NOTICE +0 -0
  69. {pycontrails-0.47.3 → pycontrails-0.48.1}/README.md +0 -0
  70. {pycontrails-0.47.3 → pycontrails-0.48.1}/RELEASE.md +0 -0
  71. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/_static/css/style.css +0 -0
  72. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/_static/img/favicon.png +0 -0
  73. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/_static/img/logo-dark.png +0 -0
  74. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/_static/img/logo.png +0 -0
  75. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/_static/pycontrails.bib +0 -0
  76. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/changelog.rst +0 -0
  77. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/conf.py +0 -0
  78. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/contributing.rst +0 -0
  79. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/develop.rst +0 -0
  80. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/AircraftPerformance.ipynb +0 -0
  81. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/Cache.ipynb +0 -0
  82. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/CoCiP.ipynb +0 -0
  83. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/ECMWF.ipynb +0 -0
  84. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/Flight.ipynb +0 -0
  85. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/GFS.ipynb +0 -0
  86. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/GOES.ipynb +0 -0
  87. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/Meteorology.ipynb +0 -0
  88. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/advection.ipynb +0 -0
  89. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/airports.ipynb +0 -0
  90. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/flight.csv +0 -0
  91. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/flight2.csv +0 -0
  92. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples/flightplan.ipynb +0 -0
  93. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/examples.rst +0 -0
  94. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/index.rst +0 -0
  95. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/install.rst +0 -0
  96. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/literature.rst +0 -0
  97. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/tutorials/CoCiP.ipynb +0 -0
  98. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/tutorials/flight.csv +0 -0
  99. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/tutorials/interpolating-specific-humidity.ipynb +0 -0
  100. {pycontrails-0.47.3 → pycontrails-0.48.1}/docs/tutorials.rst +0 -0
  101. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/__init__.py +0 -0
  102. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/aircraft_performance.py +0 -0
  103. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/airports.py +0 -0
  104. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/cache.py +0 -0
  105. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/fleet.py +0 -0
  106. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/flightplan.py +0 -0
  107. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/fuel.py +0 -0
  108. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/interpolation.py +0 -0
  109. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/polygon.py +0 -0
  110. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/core/rgi_cython.pyx +0 -0
  111. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/__init__.py +0 -0
  112. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/ecmwf/__init__.py +0 -0
  113. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/ecmwf/variables.py +0 -0
  114. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/gfs/__init__.py +0 -0
  115. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/gfs/variables.py +0 -0
  116. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/goes.py +0 -0
  117. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/spire/__init__.py +0 -0
  118. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/datalib/spire/spire.py +0 -0
  119. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/ext/bada.py +0 -0
  120. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/ext/cirium.py +0 -0
  121. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/ext/empirical_grid.py +0 -0
  122. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/ext/synthetic_flight.py +0 -0
  123. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/__init__.py +0 -0
  124. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocip/__init__.py +0 -0
  125. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocip/cocip_uncertainty.py +0 -0
  126. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocip/contrail_properties.py +0 -0
  127. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocip/output_formats.py +0 -0
  128. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocip/radiative_forcing.py +0 -0
  129. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocip/radiative_heating.py +0 -0
  130. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocip/wind_shear.py +0 -0
  131. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocipgrid/__init__.py +0 -0
  132. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
  133. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/cocipgrid/cocip_time_handling.py +0 -0
  134. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/dry_advection.py +0 -0
  135. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/emissions/__init__.py +0 -0
  136. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/emissions/black_carbon.py +0 -0
  137. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/emissions/emissions.py +0 -0
  138. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/emissions/ffm2.py +0 -0
  139. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
  140. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/emissions/static/edb-gaseous-v28c-engines.csv +0 -0
  141. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/emissions/static/edb-nvpm-v28c-engines.csv +0 -0
  142. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/humidity_scaling/__init__.py +0 -0
  143. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/humidity_scaling/humidity_scaling.py +0 -0
  144. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/humidity_scaling/quantiles/era5-quantiles.pq +0 -0
  145. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/pcc.py +0 -0
  146. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/ps_model/__init__.py +0 -0
  147. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/ps_model/ps_aircraft_params.py +0 -0
  148. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/ps_model/ps_grid.py +0 -0
  149. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/ps_model/ps_model.py +0 -0
  150. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/models/ps_model/static/ps-aircraft-params-20230517.csv +0 -0
  151. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/physics/__init__.py +0 -0
  152. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/physics/constants.py +0 -0
  153. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/physics/geo.py +0 -0
  154. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/physics/jet.py +0 -0
  155. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/physics/thermo.py +0 -0
  156. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/physics/units.py +0 -0
  157. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/py.typed +0 -0
  158. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/utils/__init__.py +0 -0
  159. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/utils/dependencies.py +0 -0
  160. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/utils/iteration.py +0 -0
  161. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/utils/json.py +0 -0
  162. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails/utils/temp.py +0 -0
  163. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails.egg-info/SOURCES.txt +0 -0
  164. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails.egg-info/dependency_links.txt +0 -0
  165. {pycontrails-0.47.3 → pycontrails-0.48.1}/pycontrails.egg-info/top_level.txt +0 -0
  166. {pycontrails-0.47.3 → pycontrails-0.48.1}/setup.cfg +0 -0
  167. {pycontrails-0.47.3 → pycontrails-0.48.1}/setup.py +0 -0
  168. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/__init__.py +0 -0
  169. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/_deprecated.py +0 -0
  170. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/cocip/Makefile +0 -0
  171. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/cocip/README.md +0 -0
  172. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/cocip/benchmark.py +0 -0
  173. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/cocip/compare.py +0 -0
  174. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/cocip/data.md +0 -0
  175. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/cocip/output.py +0 -0
  176. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/cocip/review.ipynb +0 -0
  177. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/cocip-fortran/README.md +0 -0
  178. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
  179. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/north-atlantic-study/README.md +0 -0
  180. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/north-atlantic-study/support.py +0 -0
  181. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/benchmark/north-atlantic-study/validate.py +0 -0
  182. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/fixtures/cocip-met.py +0 -0
  183. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/fixtures/cocip-met2.py +0 -0
  184. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/fixtures/ecmwf-met.py +0 -0
  185. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/fixtures/gfs-met.py +0 -0
  186. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/__init__.py +0 -0
  187. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
  188. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/cocip-contrail-output.json +0 -0
  189. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/cocip-contrail-output2.json +0 -0
  190. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/cocip-flight-output.json +0 -0
  191. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/cocip-flight-output2.json +0 -0
  192. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
  193. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
  194. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/flight-cocip2.csv +0 -0
  195. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/flight-meridian.csv +0 -0
  196. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/flight-metadata.json +0 -0
  197. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
  198. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/flight.csv +0 -0
  199. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
  200. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/met-20190101-eu.nc +0 -0
  201. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/met-accf-pl.nc +0 -0
  202. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/met-accf-sl.nc +0 -0
  203. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/met-ecmwf-pl.nc +0 -0
  204. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/met-ecmwf-sl.nc +0 -0
  205. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/met-era5-cocip1.nc +0 -0
  206. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/met-era5-cocip2.nc +0 -0
  207. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/met-gfs.nc +0 -0
  208. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/polygon-bug.nc +0 -0
  209. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/rad-20190101-eu.nc +0 -0
  210. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/rad-era5-cocip1.nc +0 -0
  211. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/rad-era5-cocip2.nc +0 -0
  212. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/static/rad-gfs.nc +0 -0
  213. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_airports.py +0 -0
  214. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_cache.py +0 -0
  215. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_cocip_grid.py +0 -0
  216. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_cocip_grid_parity.py +0 -0
  217. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_cocip_radiative_forcing.py +0 -0
  218. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_cocip_uncertainty.py +0 -0
  219. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_coordinates.py +0 -0
  220. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_dry_advection.py +0 -0
  221. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_emissions.py +0 -0
  222. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_flightplan.py +0 -0
  223. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_fuel.py +0 -0
  224. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_geo.py +0 -0
  225. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_goes.py +0 -0
  226. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_humidity_scaling.py +0 -0
  227. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_init.py +0 -0
  228. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_interpolation.py +0 -0
  229. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_met_cache.py +0 -0
  230. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_models.py +0 -0
  231. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_polygons.py +0 -0
  232. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_ps_model.py +0 -0
  233. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_spire.py +0 -0
  234. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_tau_cirrus.py +0 -0
  235. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_thermo_sac.py +0 -0
  236. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_units.py +0 -0
  237. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_utils.py +0 -0
  238. {pycontrails-0.47.3 → pycontrails-0.48.1}/tests/unit/test_zarr.py +0 -0
@@ -41,7 +41,7 @@ jobs:
41
41
 
42
42
  - uses: actions/setup-python@v4
43
43
  with:
44
- python-version: '3.11'
44
+ python-version: '3.12'
45
45
  cache: 'pip'
46
46
  cache-dependency-path: pyproject.toml
47
47
 
@@ -41,7 +41,7 @@ jobs:
41
41
 
42
42
  - uses: actions/setup-python@v4
43
43
  with:
44
- python-version: '3.11'
44
+ python-version: '3.12'
45
45
  cache: 'pip'
46
46
  cache-dependency-path: pyproject.toml
47
47
 
@@ -46,7 +46,7 @@ jobs:
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 cp312-*'
49
+ CIBW_TEST_SKIP: '*-macosx_arm64'
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@v4
31
31
 
32
32
  - name: Run OpenSSF Security Scorecard
33
- uses: ossf/scorecard-action@v2.3.0
33
+ uses: ossf/scorecard-action@v2.3.1
34
34
  with:
35
35
  results_file: results.sarif
36
36
  results_format: sarif
@@ -1,8 +1,6 @@
1
1
  # Run unit tests from the ground up
2
2
  # installing "pycontrails" into the Github OS environments
3
3
 
4
- # TODO: Include windows platforms testing here
5
-
6
4
  name: Unit tests
7
5
 
8
6
  on:
@@ -40,7 +38,7 @@ jobs:
40
38
  fail-fast: false
41
39
  matrix:
42
40
  os: [ubuntu-latest, windows-latest]
43
- pyversion: ['3.9', '3.10', '3.11']
41
+ pyversion: ['3.9', '3.10', '3.11', '3.12']
44
42
  runs-on: ${{ matrix.os }}
45
43
 
46
44
  steps:
@@ -6,6 +6,7 @@
6
6
  .DS_Store
7
7
  .idea
8
8
  _main_debug.py
9
+ debug.ipynb
9
10
  *.swp
10
11
  *.swo
11
12
 
@@ -55,6 +56,7 @@ docs/examples/airports
55
56
  # data
56
57
  .ecmwf
57
58
  *.nc
59
+ *.grib
58
60
  bada/
59
61
 
60
62
  # docker
@@ -1,6 +1,68 @@
1
1
 
2
2
  # Changelog
3
3
 
4
+ ## v0.48.1
5
+
6
+ ### Features
7
+
8
+ - Generalize `met.shift_longitude()` to translate longitude coordinates onto any domain bounds.
9
+ - Add `VectorDataset.to_dict()` methods to output Vector data as dictionary. This method enables `Flight.to_dict()` objects to be serialized for input to the [Contrails API](https://api.contrails.org).
10
+ - Add `VectorDataset.from_dict()` class method to create `VectorDataset` class from dictionary.
11
+ - Support more time formats, including timezone aware times, in `VectorDataset` creation. All timezone aware `"time"`` coordinates are converted to UTC and stripped of timezone identifier.
12
+
13
+ ### Fixes
14
+
15
+ - Fix issue in the `wake_vortex.max_downward_displacement` function in which float32 dtypes were promoted to float64 dtypes in certain cases.
16
+ - Ignore empty vectors in `VectorDataset.sum`.
17
+
18
+ ### Internals
19
+
20
+ - Set `frozen=True` on the `MetVariable` dataclass.
21
+ - Test against python 3.12 in the GitHub Actions CI. Use python 3.12 the docs and doctest workflows.
22
+
23
+ ## v0.48.0
24
+
25
+ This release includes a number of breaking changes and new features. If upgrading from a previous version of `pycontrails`, please read the changelog carefully. Open an [issue](https://github.com/contrailcirrus/pycontrails/issues) if you experience problems.
26
+
27
+ ### Breaking changes
28
+
29
+ - When running `Cocip` and other `pycontrails` models, the `met` and `rad` parameter must now contain predefined metadata attributes `provider`, `dataset`, and `product` describing the met source. An error will now be raised in `Cocip` if these attributes are not present.
30
+ - Deprecate passing arbitrary `kwargs` into the `MetDataArray` constructor.
31
+ - No longer convert accumulated radiation data to average instantaneous data in `ERA5` and `HRES` interfaces. This logic is now handled downstream by the model (e.g., `Cocip`). This change allows for more flexibility in the `rad` data passed into the model and avoids unnecessary computation in the `MetDataSource` interfaces.
32
+ - Add new `MetDataSource.set_met_source_metadata` abstract method. This should be called within the implementing class `open_metdataset` method.
33
+ - No longer take a finite difference in the time dimension for HRES radiation data. This is now also handled natively in `Cocip`.
34
+ - No longer convert relative humidity from a percentage to a fraction in `ERA5` and `HRES` interfaces.
35
+ - Require the `HRES` `stream` parameter to be one of `["oper", "enfo"]`. Require the `field_type` parameter to be one of `["fc", "pf", "cf", "an"]`.
36
+ - Remove the `steps` and `step_offset` properties in the `GFSForecast` interface. Now the `timesteps` attribute is the only source of truth for determining AWS S3 keys. Change the `filename` method to take in a `datatime` timestep instead of an `int` step. No longer assign the first step radiation data to the zeroth step.
37
+ - Change the return type of `ISSR.eval`, `SAC.eval`, and `PCR.eval` from `MetDataArray` to `MetDataset`. This is more consistent with the return type of other `pycontrails` models and more closely mirrors the behavior of vector models. Set output `attrs` metadata on the global `MetDataset` instead of the individual `MetDataArray` in each case.
38
+
39
+ ### Features
40
+
41
+ - Rewrite parts of the `pycontrails.core.datalib` module for higher performance and readability.
42
+ - Add optional `attrs` and `attrs_kwargs` parameters to `MetDataset` constructor. This allows the user to customize the attributes on the underlying `xarray.Dataset` object. This update makes `MetDataset` more consistent with `VectorDataset`.
43
+ - Add three new properties `provider_attr`, `dataset_attr`, and `product_attr` to `MetDataset`. These properties give metadata describing the underlying meterological data source.
44
+ - Add new `Model.transfer_met_source_attrs` method for more consistent handling of met source metadata on the `source` parameter passed into `Model.eval`.
45
+ - No longer require `geopotential` data when computing `tau_cirrus`. If neither `geopotential` nor `geopotential_height` are available, geopotential is approximated from the geometric height. No longer require geopotential on the `met` parameter in `Cocip` or `CocipGrid`.
46
+ - Remove the `Cocip` `shift_radiation_time` parameter. This is now inferred directly from the `rad` metadata. An error is raised if the necessary metadata is not present.
47
+ - Allow `Cocip` to run with both instantaneous (`W m-2`) and accumulated (`J m-2`) radiation data.
48
+ - Allow `Cocip` to run with accumulated ECMWF HRES radiation data.
49
+
50
+ ### Fixes
51
+
52
+ - Correct radiation unit in the `ACCF` wrapper model [#64]. Both instantaneous (`W m-2`) and accumulated (`J m-2`) radiation data are now supported, and the `ACCF` wrapper will handle each appropriately.
53
+ - Avoid unnecessary writing and reading of temporary files in `ERA5.cache_dataset` and `HRES.cache_dataset`.
54
+ - Fix timestep resolution bug in `GFSForecast`. When the `grid` parameter is 0.5 or 1.0, forecasts are only available every 3 hours. Previously, the `timesteps` property would define an hourly timestep.
55
+
56
+ ### Internals
57
+
58
+ - Include `name` parameter in `MetDataArray` constructor.
59
+ - Make the `coordinates.slice_domain` function slightly more performant by explicitly dropping nan values from the `request` parameter.
60
+ - Round unwieldy floating point numbers in `GeoVectorDataset._display_attrs`.
61
+ - Remove the `ecmwflibs` package from the `ecmwf` optional dependencies.
62
+ - Add NPY to `ruff` rules.
63
+ - Add convenience `MetDataset.standardize_variables` method.
64
+ - Remove the `p_settings` attribute on the `ACCF` interface. This is now constructed internally within `ACCF.eval`. Replace the `ACCF._update_accf_config` method with a `_get_accf_config` function.
65
+
4
66
  ## v0.47.3
5
67
 
6
68
  ### Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycontrails
3
- Version: 0.47.3
3
+ Version: 0.48.1
4
4
  Summary: Python library for modeling aviation climate impacts
5
5
  Author-email: Breakthrough Energy <py@contrails.org>
6
6
  License: Apache-2.0
@@ -68,7 +68,6 @@ Provides-Extra: ecmwf
68
68
  Requires-Dist: cdsapi>=0.4; extra == "ecmwf"
69
69
  Requires-Dist: cfgrib>=0.9; extra == "ecmwf"
70
70
  Requires-Dist: eccodes>=1.4; extra == "ecmwf"
71
- Requires-Dist: ecmwflibs>=0.4; extra == "ecmwf"
72
71
  Requires-Dist: ecmwf-api-client>=1.6; extra == "ecmwf"
73
72
  Requires-Dist: netcdf4>=1.6.1; extra == "ecmwf"
74
73
  Requires-Dist: platformdirs>=3.0; extra == "ecmwf"
@@ -84,6 +83,7 @@ Requires-Dist: eccodes>=1.4; extra == "gfs"
84
83
  Requires-Dist: platformdirs>=3.0; extra == "gfs"
85
84
  Requires-Dist: tqdm>=4.61; extra == "gfs"
86
85
  Provides-Extra: goes
86
+ Requires-Dist: aiohttp>=3.9.0b0; python_version >= "3.12" and extra == "goes"
87
87
  Requires-Dist: cartopy>=0.22; extra == "goes"
88
88
  Requires-Dist: gcsfs>=2022.3; extra == "goes"
89
89
  Requires-Dist: h5netcdf>=1.2; extra == "goes"
@@ -35,6 +35,7 @@ Flight & Aircraft
35
35
  :toctree: api/
36
36
 
37
37
  Flight
38
+ FlightPhase
38
39
  Fuel
39
40
  JetA
40
41
  SAFBlend