pycontrails 0.49.5__cp311-cp311-win_amd64.whl → 0.50.1__cp311-cp311-win_amd64.whl

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 (32) hide show
  1. pycontrails/_version.py +2 -2
  2. pycontrails/core/datalib.py +60 -38
  3. pycontrails/core/flight.py +11 -6
  4. pycontrails/core/interpolation.py +39 -1
  5. pycontrails/core/met.py +14 -16
  6. pycontrails/core/met_var.py +2 -2
  7. pycontrails/core/models.py +7 -3
  8. pycontrails/core/rgi_cython.cp311-win_amd64.pyd +0 -0
  9. pycontrails/core/vector.py +15 -13
  10. pycontrails/datalib/ecmwf/__init__.py +4 -0
  11. pycontrails/datalib/ecmwf/arco_era5.py +577 -0
  12. pycontrails/datalib/ecmwf/common.py +1 -1
  13. pycontrails/datalib/ecmwf/era5.py +2 -5
  14. pycontrails/datalib/ecmwf/variables.py +18 -0
  15. pycontrails/datalib/gfs/gfs.py +2 -2
  16. pycontrails/datalib/goes.py +14 -12
  17. pycontrails/models/cocip/cocip.py +48 -8
  18. pycontrails/models/cocip/cocip_params.py +20 -1
  19. pycontrails/models/cocip/contrail_properties.py +4 -9
  20. pycontrails/models/cocip/unterstrasser_wake_vortex.py +403 -0
  21. pycontrails/models/cocip/wake_vortex.py +22 -1
  22. pycontrails/models/cocipgrid/cocip_grid.py +103 -6
  23. pycontrails/models/cocipgrid/cocip_grid_params.py +25 -19
  24. pycontrails/models/issr.py +1 -1
  25. pycontrails/physics/constants.py +6 -0
  26. pycontrails/utils/dependencies.py +13 -11
  27. {pycontrails-0.49.5.dist-info → pycontrails-0.50.1.dist-info}/METADATA +4 -2
  28. {pycontrails-0.49.5.dist-info → pycontrails-0.50.1.dist-info}/RECORD +32 -30
  29. {pycontrails-0.49.5.dist-info → pycontrails-0.50.1.dist-info}/WHEEL +1 -1
  30. {pycontrails-0.49.5.dist-info → pycontrails-0.50.1.dist-info}/LICENSE +0 -0
  31. {pycontrails-0.49.5.dist-info → pycontrails-0.50.1.dist-info}/NOTICE +0 -0
  32. {pycontrails-0.49.5.dist-info → pycontrails-0.50.1.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- """Default CocipGrid parameters."""
1
+ """Default :class:`CocipGrid` parameters."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -17,7 +17,7 @@ class CocipGridParams(CocipParams):
17
17
  # Algorithm
18
18
  # ---------
19
19
 
20
- #: Approximate size of a typical `np.array` used with in CoCiP calculations.
20
+ #: Approximate size of a typical :class:`numpy.ndarray` used with in CoCiP calculations.
21
21
  #: The 4-dimensional array defining the waypoint is raveled and split into
22
22
  #: batches of this size.
23
23
  #: A smaller number for this parameter will reduce memory footprint at the
@@ -26,25 +26,27 @@ class CocipGridParams(CocipParams):
26
26
 
27
27
  #: Additional boost to target split size before SAC is computed. For typical meshes, only
28
28
  #: 10% of waypoints will survive SAC and initial downwash filtering. Accordingly, this parameter
29
- #: magnifies mesh split size before SAC is computed.
29
+ #: magnifies mesh split size before SAC is computed. See :attr:`target_split_size`.
30
30
  target_split_size_pre_SAC_boost: float = 3.0
31
31
 
32
- #: Display `tqdm` progress bar showing batch evaluation progress.
32
+ #: Display ``tqdm`` progress bar showing batch evaluation progress.
33
33
  show_progress: bool = True
34
34
 
35
35
  # ------------------
36
36
  # Simulated Aircraft
37
37
  # ------------------
38
38
 
39
- #: Nominal segment length to place at each grid point [unit `m`]. Round-off error
39
+ #: Nominal segment length to place at each grid point [:math:`m`]. Round-off error
40
40
  #: can be problematic with a small nominal segment length and a large
41
- #: `dt_integration` parameter. On the other hand, too large of a nominal segment
42
- #: length diminishes the "locality" of the grid point.
41
+ #: :attr:`dt_integration` parameter. On the other hand,
42
+ #: too large of a nominal segment length diminishes the "locality" of the grid point.
43
43
  #:
44
- #: .. versionadded 0.32.2:: EXPERIMENTAL: If None, run CoCiP in "segment-free"
45
- #: mode. This mode does not include any terms involving segments (wind shear,
46
- #: segment_length, any derived terms). See :attr:`CocipGridParams.azimuth`
47
- #: and :attr:`CocipGridParams.dsn_dz_factor` for more details.
44
+ #: .. versionadded:: 0.32.2
45
+ #:
46
+ #: EXPERIMENTAL: If None, run CoCiP in "segment-free"
47
+ #: mode. This mode does not include any terms involving segments (wind shear,
48
+ #: segment length, any derived terms). See :attr:`azimuth`
49
+ #: and :attr:`dsn_dz_factor` for more details.
48
50
  segment_length: float | None = 1000.0
49
51
 
50
52
  #: Fuel type
@@ -60,10 +62,13 @@ class CocipGridParams(CocipParams):
60
62
 
61
63
  #: Navigation bearing [:math:`\deg`] measured in clockwise direction from
62
64
  #: true north, by default 0.0.
63
- #: .. versionadded 0.32.2:: EXPERIMENTAL: If None, run CoCiP in "segment-free"
64
- #: mode. This mode does not include any terms involving segments (wind shear,
65
- #: segment_length, any derived terms), unless :attr:`CocipGridParams.dsn_dz_factor`
66
- #: is non-zero.
65
+ #:
66
+ #: .. versionadded:: 0.32.2
67
+ #:
68
+ #: EXPERIMENTAL: If None, run CoCiP in "segment-free"
69
+ #: mode. This mode does not include any terms involving segments (wind shear,
70
+ #: segment_length, any derived terms), unless :attr:`dsn_dz_factor`
71
+ #: is non-zero.
67
72
  azimuth: float | None = 0.0
68
73
 
69
74
  #: Experimental parameter used to approximate ``dsn_dz`` from ``ds_dz`` via
@@ -73,7 +78,7 @@ class CocipGridParams(CocipParams):
73
78
  #: ``dsn_dz_factor = 0.665`` adequately approximates the mean EF predictions
74
79
  #: of :class:`CocipGrid` over all azimuths.
75
80
  #:
76
- #: .. versionadded:: 0.32.2.
81
+ #: .. versionadded:: 0.32.2
77
82
  dsn_dz_factor: float = 0.0
78
83
 
79
84
  #: --------------------
@@ -90,7 +95,7 @@ class CocipGridParams(CocipParams):
90
95
  #: :attr:`aircraft_performance` model is used to estimate the aircraft mass.
91
96
  aircraft_mass: float | None = None
92
97
 
93
- #: Cruising true airspeed, [:math:`m * s^{-1}`]. If included in :attr:`CocipGrid.source`,
98
+ #: Cruising true airspeed, [:math:`m \ s^{-1}`]. If included in :attr:`CocipGrid.source`,
94
99
  #: this parameter is unused. Otherwise, if this parameter is None, the
95
100
  #: :attr:`aircraft_performance` model is used to estimate the true airspeed.
96
101
  true_airspeed: float | None = None
@@ -100,13 +105,14 @@ class CocipGridParams(CocipParams):
100
105
  #: :attr:`aircraft_performance` model is used to estimate the engine efficiency.
101
106
  engine_efficiency: float | None = None
102
107
 
103
- #: Nominal fuel flow, [:math:`kg s^{-1}`]. If included in :attr:`CocipGrid.source`,
108
+ #: Nominal fuel flow, [:math:`kg \ s^{-1}`]. If included in :attr:`CocipGrid.source`,
104
109
  #: this parameter is unused. Otherwise, if this parameter is None, the
105
110
  #: :attr:`aircraft_performance` model is used to estimate the fuel flow.
106
111
  fuel_flow: float | None = None
107
112
 
108
113
  #: Aircraft performance model. Required unless ``source`` or ``params``
109
114
  #: provide all of the following variables:
115
+ #:
110
116
  #: - wingspan
111
117
  #: - true_airspeed (or mach_number)
112
118
  #: - fuel_flow
@@ -123,7 +129,7 @@ class CocipGridParams(CocipParams):
123
129
  # ------------
124
130
 
125
131
  #: Attach additional formation specific data to the output. If True, attach
126
- #: all possible formation data. See :ref:pycontrails.models.cocipgrid.cocip_grid`
132
+ #: all possible formation data. See :mod:`pycontrails.models.cocipgrid.cocip_grid`
127
133
  #: for a list of supported formation data.
128
134
  verbose_outputs_formation: bool | set[str] = False
129
135
 
@@ -59,7 +59,7 @@ class ISSR(Model):
59
59
  >>> out1 = model.eval()
60
60
  >>> issr1 = out1["issr"]
61
61
  >>> issr1.proportion # Get proportion of values with ice supersaturation
62
- 0.114140
62
+ 0.11414134603859523
63
63
 
64
64
  >>> # Run with a lower threshold
65
65
  >>> out2 = model.eval(rhi_threshold=0.95)
@@ -18,10 +18,16 @@ g: float = 9.80665
18
18
  #: Radius of Earth :math:`[m]`
19
19
  radius_earth: float = 6371229.0
20
20
 
21
+ #: Surface area of Earth :math:`[m^2]`
22
+ surface_area_earth: float = 5.10072e14
23
+
21
24
  #: ISA height of the tropopause :math:`[m]`
22
25
  #: :cite:`wikipediacontributorsInternationalStandardAtmosphere2023`
23
26
  h_tropopause: float = 11000.0
24
27
 
28
+ #: Seconds in a Julian year :math:`[s]`
29
+ seconds_per_year: float = 3.15576e7
30
+
25
31
  # -------------
26
32
  # Thermodynamic
27
33
  # -------------
@@ -1,4 +1,4 @@
1
- """Raise ``ModuleNotFoundError`` when dependencies are not met."""
1
+ """Raise ``ImportError`` when dependencies are not met."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -8,30 +8,32 @@ from typing import NoReturn
8
8
  def raise_module_not_found_error(
9
9
  name: str,
10
10
  package_name: str,
11
- module_not_found_error: ModuleNotFoundError,
11
+ module_not_found_error: ImportError,
12
12
  pycontrails_optional_package: str | None = None,
13
13
  extra: str | None = None,
14
14
  ) -> NoReturn:
15
- """Raise ``ModuleNotFoundError`` with a helpful message.
15
+ """Raise ``ImportError`` with a helpful message.
16
16
 
17
17
  Parameters
18
18
  ----------
19
19
  name : str
20
- The name describing the context of the ``ModuleNotFoundError``. For example,
20
+ The name describing the context of the ``ImportError``. For example,
21
21
  if the module is required for a specific function, the name could be
22
22
  "my_function function". If the module is required for a specific method,
23
23
  the name could be "MyClass.my_method method". If the module is required
24
- for an entire pycontrails module, the name could be "my_module module".
24
+ for an entire ``pycontrails`` module, the name could be "my_module module".
25
25
  package_name : str
26
26
  The name of the package that is required. This should be the full name of
27
27
  the python package, which may be different from the name of the module
28
28
  that is actually imported. For example, if ``import sklearn`` triggers
29
- the ``ModuleNotFoundError``, the ``package_name`` should be "scikit-learn".
30
- module_not_found_error : ModuleNotFoundError
31
- The ``ModuleNotFoundError`` that was raised. This is simply passed to the
32
- ``from`` clause of the ``raise`` statement below.
29
+ the ``ImportError``, the ``package_name`` should be "scikit-learn".
30
+ module_not_found_error : ImportError
31
+ The ``ImportError`` that was raised. This is passed to the
32
+ ``from`` clause of the ``raise`` statement below. The subclass of the
33
+ ``ImportError`` is preserved (e.g., ``ModuleNotFoundError`` or
34
+ ``ImportError``).
33
35
  pycontrails_optional_package : str, optional
34
- The name of the optional pycontrails package that can be used to
36
+ The name of the optional ``pycontrails`` package that can be used to
35
37
  install the required package. See the ``pyproject.toml`` file.
36
38
  extra : str, optional
37
39
  Any extra information that should be included in the error message.
@@ -61,4 +63,4 @@ def raise_module_not_found_error(
61
63
  if extra:
62
64
  msg = f"{msg} {extra}"
63
65
 
64
- raise ModuleNotFoundError(msg) from module_not_found_error
66
+ raise type(module_not_found_error)(msg) from module_not_found_error
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycontrails
3
- Version: 0.49.5
3
+ Version: 0.50.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
@@ -47,7 +47,7 @@ Requires-Dist: platformdirs >=3.0 ; extra == 'dev'
47
47
  Requires-Dist: pre-commit >=2.10 ; extra == 'dev'
48
48
  Requires-Dist: psutil ; extra == 'dev'
49
49
  Requires-Dist: pyarrow >=5.0 ; extra == 'dev'
50
- Requires-Dist: pytest >=6.1 ; extra == 'dev'
50
+ Requires-Dist: pytest >=8.1 ; extra == 'dev'
51
51
  Requires-Dist: pytest-cov >=2.11 ; extra == 'dev'
52
52
  Requires-Dist: requests >=2.25 ; extra == 'dev'
53
53
  Requires-Dist: ruff ==0.1.15 ; extra == 'dev'
@@ -72,6 +72,7 @@ Requires-Dist: ecmwf-api-client >=1.6 ; extra == 'ecmwf'
72
72
  Requires-Dist: netcdf4 >=1.6.1 ; extra == 'ecmwf'
73
73
  Requires-Dist: platformdirs >=3.0 ; extra == 'ecmwf'
74
74
  Requires-Dist: requests >=2.25 ; extra == 'ecmwf'
75
+ Requires-Dist: lxml >=5.1.0 ; extra == 'ecmwf'
75
76
  Provides-Extra: gcp
76
77
  Requires-Dist: google-cloud-storage >=2.1 ; extra == 'gcp'
77
78
  Requires-Dist: platformdirs >=3.0 ; extra == 'gcp'
@@ -102,6 +103,7 @@ Requires-Dist: seaborn >=0.11 ; extra == 'vis'
102
103
  Requires-Dist: shapely >=2.0 ; extra == 'vis'
103
104
  Provides-Extra: zarr
104
105
  Requires-Dist: fsspec >=2022.7.1 ; extra == 'zarr'
106
+ Requires-Dist: gcsfs >=2022.7.1 ; extra == 'zarr'
105
107
  Requires-Dist: zarr >=2.12 ; extra == 'zarr'
106
108
 
107
109
  # pycontrails
@@ -1,33 +1,34 @@
1
1
  pycontrails/__init__.py,sha256=8WUs6hZAAIH1yKfwYJ8UEqNsk5voRyLmmD3Dje9DZaE,2055
2
- pycontrails/_version.py,sha256=3A20dhM8-dQpEHRAXTyDh6OEAHYxc4ZEecto-hahwxs,429
2
+ pycontrails/_version.py,sha256=iOkMTC9BGn2KBWKt1YcKpLAm1DBaIq115ye0ZvuYj54,429
3
3
  pycontrails/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  pycontrails/core/__init__.py,sha256=eNypVTz1kHBSKAJX3CgfKw-VKrMRRkKTutmjSlrfeUs,870
5
5
  pycontrails/core/aircraft_performance.py,sha256=ikeJmdvFRDa1RdfR-JKfhQbiiIzL0c2vzcBmobmoxMs,22511
6
6
  pycontrails/core/airports.py,sha256=nGKXN3jOtzsDCaJZVFNO3e3w-U3lqMTz5Ww5jALiRJY,6984
7
7
  pycontrails/core/cache.py,sha256=NNrFNUvmDEkeS0d1VpDNWmF225a8u2d-TGcpRgQd9Qs,28838
8
8
  pycontrails/core/coordinates.py,sha256=cb8RprpoSgRTFbAXTPNfuUHVnOxyV3zZ0Ac88P5YbBw,5465
9
- pycontrails/core/datalib.py,sha256=cf922AA0raBGWBs_UKRifvkFEDDhBJ_DmZQIdmcMZvI,23221
9
+ pycontrails/core/datalib.py,sha256=u2dNc8HxkeJd1jMPTZsOTEagTI0wQkzF1ComctmxJO8,23993
10
10
  pycontrails/core/fleet.py,sha256=WKF_s_gRXHmB9b1OW7RUkM1TzfvVD8Ab0Md-qKRwkzs,16544
11
- pycontrails/core/flight.py,sha256=ehxpo-Ofr4unQpeSR1ZXmbFGClyW628cA000oJZ_Jp8,77974
11
+ pycontrails/core/flight.py,sha256=u3if3cTTWtSIi2eVaq3OyhMbthcTNrVbWVypegAp3sg,78382
12
12
  pycontrails/core/flightplan.py,sha256=cpMZ6VCYbfwh3vnew2XgVEHnqBx1NzeAhrTVCvlbbss,7569
13
13
  pycontrails/core/fuel.py,sha256=06YUDhvC8Rx6KbUXRB9qLTsJX2V7tLbzjwAfDH0R6l8,4472
14
- pycontrails/core/interpolation.py,sha256=pDSQx8b3UjwWzKRKn_yKd3h2XsUA_ARRnZjIaH6sf60,24719
15
- pycontrails/core/met.py,sha256=DT3CAi3zucPTRgp-n_Q6CpdJ52ZwtSCFEonPIzTapWM,95120
16
- pycontrails/core/met_var.py,sha256=ZGvnYCXWnr0-A-bLmuhl1y2GIdL1X6pbzM-D-kcDpBg,9502
17
- pycontrails/core/models.py,sha256=rK7Nh5VIbNBUrJGE7Q8fnwveuuycPa-KkUJltV4SRZA,40042
14
+ pycontrails/core/interpolation.py,sha256=Sp9s17i1QQx3jZwnwvt3vo6enWwlkYwTVKCE27N2Wdk,26214
15
+ pycontrails/core/met.py,sha256=J7m0fJNJrFfcXP4d0ctf_ZK4eDa2kT9kWFHfwnEECo8,94924
16
+ pycontrails/core/met_var.py,sha256=JzB7UhBLQyU4TuKZqemhpBHA6Dbt89BPYO2sYBLMkL4,9504
17
+ pycontrails/core/models.py,sha256=VS-ct4xkojJIuqdPpT1ke1ZetNzv10nNx_Z_XalZyeo,40175
18
18
  pycontrails/core/polygon.py,sha256=ukcYh4TzGxz-ggipYe1m6DR50aEBgQhxWkEtjoTqC3w,18227
19
- pycontrails/core/rgi_cython.cp311-win_amd64.pyd,sha256=gYNyYdCQSCmur81UVYGluVsJB3ZgTXmsiGFlPUzjgEk,258560
20
- pycontrails/core/vector.py,sha256=QeHavtQYc44z3VFCsF_2PJTzMie7MBAkt6ReTKSLMXE,73864
19
+ pycontrails/core/rgi_cython.cp311-win_amd64.pyd,sha256=-0fMQ4TpMhIrFkMWhQVJtiT4ILu0n8Rk8tUUKfD3aPE,258560
20
+ pycontrails/core/vector.py,sha256=MF0oWX0Ghp_G41A712VbU1GEKRNU_Pj9PtzMREPG5Z8,73916
21
21
  pycontrails/datalib/__init__.py,sha256=WnXqgv20SrHZLjFZ9qpQEwRnf0QvfZU-YvMqh7PAUwg,246
22
- pycontrails/datalib/goes.py,sha256=Ky7elxQJyKsk6dlJ22wsOtpaZn34LaEQCqqdX3M4a5s,26932
23
- pycontrails/datalib/ecmwf/__init__.py,sha256=7-05ELdTfcX6N-yhwe-fGH4E7FlBW9Hjx5aAXPZiTpc,1151
24
- pycontrails/datalib/ecmwf/common.py,sha256=iPyY5PYIbkASPRtz-P_gD_DHcrVO5W2VqVHsucyM12M,3811
25
- pycontrails/datalib/ecmwf/era5.py,sha256=Z3097RmDd65asIPgjWQAO4HfxJj7onGyVPl1sTRMBFI,18891
22
+ pycontrails/datalib/goes.py,sha256=NVk6QFfHbGpOINlKlG6PR1Hn_LCmzP7k20VJQZXpVG8,27124
23
+ pycontrails/datalib/ecmwf/__init__.py,sha256=MZBpXU2ZD4GOJX9Pr43_N-8TLF-KtV6aZQ5hADmGFCE,1262
24
+ pycontrails/datalib/ecmwf/arco_era5.py,sha256=aWI69KhTfR42mZYssXCrB43lJelcV85GC8FPZDPxMak,20835
25
+ pycontrails/datalib/ecmwf/common.py,sha256=XWPlWPQskuTMHBxWeKvRSuYWHRcKeiJAxfl5lScyTPc,3806
26
+ pycontrails/datalib/ecmwf/era5.py,sha256=r4RVTfrl_3gDwf84oo1McYOn3HBwYtD6OUrloRRq6ME,18826
26
27
  pycontrails/datalib/ecmwf/hres.py,sha256=agGc9Oope2yd0u_7nH4RuxOHkiU6dc_JvxAxdSIAoCY,28953
27
28
  pycontrails/datalib/ecmwf/ifs.py,sha256=PTdP-sRUYPAxDmAhxMDffdfUH4H3qMpTWahu4mn87GA,10877
28
- pycontrails/datalib/ecmwf/variables.py,sha256=APjW0fwQ_euK7hmxNhlujcLjx7WN1CPa9DxNZ27HsXg,8940
29
+ pycontrails/datalib/ecmwf/variables.py,sha256=gkXy3g7LOIxhp7RGGxu6MU26NAhYHpd2ewAmbmuljEo,9540
29
30
  pycontrails/datalib/gfs/__init__.py,sha256=VcE2j62ITbY7F3tEtgaLrfyjHWci-4mvLtnVg3SVgtE,712
30
- pycontrails/datalib/gfs/gfs.py,sha256=QgJ1YI9aGi75V-A4dsabvkbIZrqiZ4GUltncFaJQ6kw,22213
31
+ pycontrails/datalib/gfs/gfs.py,sha256=u8IJTXiA8Gx1CTKYPzHkopVi_BBSuUqLItTBpzmC0E8,22213
31
32
  pycontrails/datalib/gfs/variables.py,sha256=u2rAsjCJTehB6MhQj9YhlZYovdwoscqAH33T5aBDzSw,2961
32
33
  pycontrails/datalib/spire/__init__.py,sha256=YiS2SMSNU0bLHfbh41nQuKB8MnQNU8o3MldreM1nrM0,362
33
34
  pycontrails/datalib/spire/spire.py,sha256=aW0wh5GDrszFb20ZMzmWKQ4uHbOCmHvVt9Sf4U3AyTI,26070
@@ -38,24 +39,25 @@ pycontrails/ext/synthetic_flight.py,sha256=CxKDAX8Jao9VXuy_eRksS8zqIaMYgiv9az5DW
38
39
  pycontrails/models/__init__.py,sha256=TKhrXe1Pu1-mV1gctx8cUAMrVxCCAtBkbZi9olfWq8s,34
39
40
  pycontrails/models/accf.py,sha256=72-2oRCSM98cwHxmKmO5ECaRPbiRE010jX5nTQDfHCs,12965
40
41
  pycontrails/models/dry_advection.py,sha256=z4XbEa0ihmcKyCrdaYbWEOYQ4yt9KfmpJ7jYhZ6g5lU,16622
41
- pycontrails/models/issr.py,sha256=uDMEFjQH_wh3jcQexMgFFq3-XrM7DEz4kZcgLSGqAM4,7550
42
+ pycontrails/models/issr.py,sha256=mqRKm106kz8um1cbRblxLRZDJanvqa5Q1BI2sqK5pkQ,7561
42
43
  pycontrails/models/pcc.py,sha256=M5KhtRgdCP9pfDFgui7ibbijtRBTjx3QOJL_m1tQYfs,11443
43
44
  pycontrails/models/pcr.py,sha256=G_0yR5PsCMeJBP6tZFi3M7A6Wcq8s71UvosdA7ozUkI,5502
44
45
  pycontrails/models/sac.py,sha256=Cj4Hi3324wjqLQ7I2CPVkrIh2Fq5W5pKpGrwhYADoHI,16420
45
46
  pycontrails/models/tau_cirrus.py,sha256=eXt3yRrcFBaZNNeH6ZOuU4XEZU2rOfrLKEOC7f0_Ywo,5194
46
47
  pycontrails/models/cocip/__init__.py,sha256=X_MlkJzQ-henQ0xGq-1bfCMajH6s9tlK5QLnN7yfQ68,929
47
- pycontrails/models/cocip/cocip.py,sha256=nILOmLjk0DQynIkn-NVjeN1K8ufb9Xno5iyz9JTr6wI,98325
48
- pycontrails/models/cocip/cocip_params.py,sha256=xvrvUMEzE490Uxh654behS6nJ2CU1g4CzadTZId7KCc,10561
48
+ pycontrails/models/cocip/cocip.py,sha256=s9j5UhPCaaxiJZDXUvQ2KnEgvQz2pMrRHlWKZijwRIw,100140
49
+ pycontrails/models/cocip/cocip_params.py,sha256=T4IseK6KtY4hG3BuGZBtFgM90HCYecUXsb_QVEK6uGo,11670
49
50
  pycontrails/models/cocip/cocip_uncertainty.py,sha256=lksROIRLt-jxEdjJTiLP9Da-FYt1GjZKaIxwDaH2Ytg,12069
50
- pycontrails/models/cocip/contrail_properties.py,sha256=dRq5o-YuC-s487Fs54OHpAuS8LkxM-HATNVclHKUhL0,57362
51
+ pycontrails/models/cocip/contrail_properties.py,sha256=u6SvucHC6VtF2kujfSVFTfv0263t5uYpNOUJZAroEzc,57111
51
52
  pycontrails/models/cocip/output_formats.py,sha256=sYGYosAL6BQvntKXdeomAph-K6EKOgsI2VQynLEHxnM,79228
52
53
  pycontrails/models/cocip/radiative_forcing.py,sha256=SYmQ8lL8gpWbf6he2C9mKSjODtytbFcdnMdBM-LtBKE,46206
53
54
  pycontrails/models/cocip/radiative_heating.py,sha256=N7FTR20luERmokprdqMOl-d8-cTYZZ2ZSsTdxZnLHfs,19368
54
- pycontrails/models/cocip/wake_vortex.py,sha256=d3oLkTWIocwYb99fl6t99LtEsbKkdsupAfoUY-GmbTI,13783
55
+ pycontrails/models/cocip/unterstrasser_wake_vortex.py,sha256=Ymz-uO9vVhLIFwT9yuF5g1g3hcT-XWdryLsebSBqoVU,14976
56
+ pycontrails/models/cocip/wake_vortex.py,sha256=r3FM4egyGohRF0qGD3pFWBJppUQ_3GhtO_g7L74HmjU,14817
55
57
  pycontrails/models/cocip/wind_shear.py,sha256=Dm181EsiCBJWTnRTZ3ZI3YXscBRnhA6ANnKer004b2Q,3980
56
58
  pycontrails/models/cocipgrid/__init__.py,sha256=OYSdZ1Htbr_IP7N_HuOAj1Pa_KLHtdEeJfXP-cN-gnU,271
57
- pycontrails/models/cocipgrid/cocip_grid.py,sha256=mcz8_G4YyiyqkuAAZiwWZk-NOtcxKJY57pVkhSunHSQ,92278
58
- pycontrails/models/cocipgrid/cocip_grid_params.py,sha256=I-Ua1ifeqOx12SbbFwau2s17LjemvUZ6ihJhmJIqpdA,5911
59
+ pycontrails/models/cocipgrid/cocip_grid.py,sha256=0KWf3Wm8GZOOIy-D86Y8bC-2MIjKbVkhevXMG-eF85s,96680
60
+ pycontrails/models/cocipgrid/cocip_grid_params.py,sha256=ZpN00VEmeRYaeZhvSfVjnEjrgn6XdClf1eqJC8Ytcuw,6013
59
61
  pycontrails/models/emissions/__init__.py,sha256=BXzV2pBps8j3xbaF1n9uPdVVLI5MBIGYx8xqDJezYIE,499
60
62
  pycontrails/models/emissions/black_carbon.py,sha256=9DRqB487pH8Iq83FXggA5mPLYEAA8NpsKx24f8uTEF4,20828
61
63
  pycontrails/models/emissions/emissions.py,sha256=WYypixqzR9a1wqfevxEKIrk3NIAIp0fKBMqOHkawsWo,48917
@@ -73,20 +75,20 @@ pycontrails/models/ps_model/ps_model.py,sha256=j7-37E3S_qu3xZGkVJZEBXxQoJ-QKXIub
73
75
  pycontrails/models/ps_model/ps_operational_limits.py,sha256=-2qwQBRr1qHUALSIEGdQM7bxi47BeJpU744epVyy1jI,10701
74
76
  pycontrails/models/ps_model/static/ps-aircraft-params-20240209.csv,sha256=rPp6Ews2dKEWHP0i3II0-y7w95ZyVsXtWwIYcm3BsPE,14742
75
77
  pycontrails/physics/__init__.py,sha256=AScCMSMSZjKxfL6mssdSLwcja1ml7MzREThQp5PLr9U,45
76
- pycontrails/physics/constants.py,sha256=JdlUyfxAgrMsF8VFNobe1Q7BXBghLu19QKQkX6vgLHQ,3100
78
+ pycontrails/physics/constants.py,sha256=SWG7H7eJCvQXfUR3qS6_fYzNvEeRZga50qT2RuaHoYU,3262
77
79
  pycontrails/physics/geo.py,sha256=Dwc9dUzUlHGCDVqFdh492vJZsC5CB8J45cJnsHaMRF4,31229
78
80
  pycontrails/physics/jet.py,sha256=iQ0g5cocj6j0JZPSxpTF3LLypSZGx3QQc6UyXsFfJGc,26461
79
81
  pycontrails/physics/thermo.py,sha256=mwtsee1nzlIP6OUdPPMrlrLTHoWqhdm6Qxdb9xS50R0,13261
80
82
  pycontrails/physics/units.py,sha256=rDHeF1r27wYtzrbU0OjZVsIKa4REvFekNjOrILGkEPw,12728
81
83
  pycontrails/utils/__init__.py,sha256=VmklFC-5I5lGFQEzuomlPk_bM6CoM9XDljfjCovG3vw,33
82
- pycontrails/utils/dependencies.py,sha256=oJDnykg1WtMWn1wSE2OKC6czj2hGD1Irh3zrI5g160I,2552
84
+ pycontrails/utils/dependencies.py,sha256=SjEdbDDKfGmmYResWZndMCUySO0W0ptWAeY1aA_kcx8,2625
83
85
  pycontrails/utils/iteration.py,sha256=En2YY4NiNwCNtAVO8HL6tv9byBGKs8MKSI7R8P-gZy4,332
84
86
  pycontrails/utils/json.py,sha256=xCv71CKVZNHk4MyoYC-hl7dXObXXbI7P8gcNCn3AUoU,6172
85
87
  pycontrails/utils/temp.py,sha256=5XXqQoEfWjz1OrhoOBZD5vkkCFeuq9LpZkyhc38gIeY,1159
86
88
  pycontrails/utils/types.py,sha256=f8FNSSzW-1ISgJ0zDtCwZgpuzpt26sUABiHHusS414s,4725
87
- pycontrails-0.49.5.dist-info/LICENSE,sha256=HVr8JnZfTaA-12BfKUQZi5hdrB3awOwLWs5X_ga5QzA,10353
88
- pycontrails-0.49.5.dist-info/METADATA,sha256=VPxASRleJeBK3MiyIOnXN3lCJf27w7uDA88ALwA_7R8,8429
89
- pycontrails-0.49.5.dist-info/NOTICE,sha256=qYeNEp8OjDK5jSW3hTlr9LQRjZeEhXQm0zDei5UFaYs,1969
90
- pycontrails-0.49.5.dist-info/WHEEL,sha256=ircjsfhzblqgSzO8ow7-0pXK-RVqDqNRGQ8F650AUNM,102
91
- pycontrails-0.49.5.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
92
- pycontrails-0.49.5.dist-info/RECORD,,
89
+ pycontrails-0.50.1.dist-info/LICENSE,sha256=HVr8JnZfTaA-12BfKUQZi5hdrB3awOwLWs5X_ga5QzA,10353
90
+ pycontrails-0.50.1.dist-info/METADATA,sha256=N03Ih7BucWyRsdXMP6kHazTHfGYPfkm2e6FAs_5NnHM,8528
91
+ pycontrails-0.50.1.dist-info/NOTICE,sha256=qYeNEp8OjDK5jSW3hTlr9LQRjZeEhXQm0zDei5UFaYs,1969
92
+ pycontrails-0.50.1.dist-info/WHEEL,sha256=nSybvzWlmdJnHiUQSY-d7V1ycwEVUTqXiTvr2eshg44,102
93
+ pycontrails-0.50.1.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
94
+ pycontrails-0.50.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-win_amd64
5
5