pycontrails 0.54.2__cp310-cp310-macosx_11_0_arm64.whl → 0.54.3__cp310-cp310-macosx_11_0_arm64.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 (29) hide show
  1. pycontrails/_version.py +2 -2
  2. pycontrails/core/aircraft_performance.py +17 -3
  3. pycontrails/core/flight.py +3 -1
  4. pycontrails/core/rgi_cython.cpython-310-darwin.so +0 -0
  5. pycontrails/datalib/ecmwf/variables.py +1 -0
  6. pycontrails/datalib/landsat.py +5 -8
  7. pycontrails/datalib/sentinel.py +7 -11
  8. pycontrails/ext/bada.py +3 -2
  9. pycontrails/ext/synthetic_flight.py +3 -2
  10. pycontrails/models/accf.py +40 -19
  11. pycontrails/models/apcemm/apcemm.py +2 -1
  12. pycontrails/models/cocip/cocip.py +1 -2
  13. pycontrails/models/cocipgrid/cocip_grid.py +25 -20
  14. pycontrails/models/dry_advection.py +50 -54
  15. pycontrails/models/ps_model/__init__.py +2 -1
  16. pycontrails/models/ps_model/ps_aircraft_params.py +3 -2
  17. pycontrails/models/ps_model/ps_grid.py +187 -1
  18. pycontrails/models/ps_model/ps_model.py +4 -7
  19. pycontrails/models/ps_model/ps_operational_limits.py +39 -52
  20. pycontrails/physics/geo.py +149 -0
  21. pycontrails/physics/jet.py +141 -11
  22. pycontrails/physics/static/iata-cargo-load-factors-20241115.csv +71 -0
  23. pycontrails/physics/static/iata-passenger-load-factors-20241115.csv +71 -0
  24. {pycontrails-0.54.2.dist-info → pycontrails-0.54.3.dist-info}/METADATA +9 -9
  25. {pycontrails-0.54.2.dist-info → pycontrails-0.54.3.dist-info}/RECORD +29 -27
  26. {pycontrails-0.54.2.dist-info → pycontrails-0.54.3.dist-info}/WHEEL +1 -1
  27. {pycontrails-0.54.2.dist-info → pycontrails-0.54.3.dist-info}/LICENSE +0 -0
  28. {pycontrails-0.54.2.dist-info → pycontrails-0.54.3.dist-info}/NOTICE +0 -0
  29. {pycontrails-0.54.2.dist-info → pycontrails-0.54.3.dist-info}/top_level.txt +0 -0
@@ -1,22 +1,28 @@
1
1
  """Jet aircraft trajectory and performance parameters.
2
2
 
3
3
  This module includes common functions to calculate jet aircraft trajectory
4
- and performance parameters, including fuel quantities, mass, thrust setting
5
- and propulsion efficiency.
4
+ and performance parameters, including fuel quantities, mass, thrust setting,
5
+ propulsion efficiency and load factors.
6
6
  """
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
+ import functools
10
11
  import logging
12
+ import pathlib
11
13
 
12
14
  import numpy as np
13
15
  import numpy.typing as npt
16
+ import pandas as pd
14
17
 
15
18
  from pycontrails.core import flight
16
19
  from pycontrails.physics import constants, units
17
20
  from pycontrails.utils.types import ArrayOrFloat, ArrayScalarLike
18
21
 
19
22
  logger = logging.getLogger(__name__)
23
+ _path_to_static = pathlib.Path(__file__).parent / "static"
24
+ PLF_PATH = _path_to_static / "iata-passenger-load-factors-20241115.csv"
25
+ CLF_PATH = _path_to_static / "iata-cargo-load-factors-20241115.csv"
20
26
 
21
27
 
22
28
  # -------------------
@@ -43,7 +49,7 @@ def acceleration(
43
49
 
44
50
  See Also
45
51
  --------
46
- :func:`flight.segment_duration`
52
+ pycontrails.Flight.segment_duration
47
53
  """
48
54
  dv_dt = np.empty_like(true_airspeed)
49
55
  dv_dt[:-1] = np.diff(true_airspeed) / segment_duration[:-1]
@@ -71,8 +77,8 @@ def climb_descent_angle(
71
77
 
72
78
  See Also
73
79
  --------
74
- :func:`flight.segment_rocd`
75
- :func:`flight.segment_true_airspeed`
80
+ pycontrails.Flight.segment_rocd
81
+ pycontrails.Flight.segment_true_airspeed
76
82
  """
77
83
  rocd_ms = units.ft_to_m(rocd) / 60.0
78
84
  sin_theta = rocd_ms / true_airspeed
@@ -319,8 +325,8 @@ def reserve_fuel_requirements(
319
325
 
320
326
  See Also
321
327
  --------
322
- :func:`flight.segment_phase`
323
- :func:`fuel_burn`
328
+ pycontrails.Flight.segment_phase
329
+ fuel_burn
324
330
  """
325
331
  segment_phase = flight.segment_phase(rocd, altitude_ft)
326
332
 
@@ -345,6 +351,128 @@ def reserve_fuel_requirements(
345
351
  # -------------
346
352
 
347
353
 
354
+ @functools.cache
355
+ def _historical_regional_load_factor(path: pathlib.Path) -> pd.DataFrame:
356
+ """Load the historical regional load factor database.
357
+
358
+ Daily load factors are estimated from linearly interpolating the monthly statistics.
359
+
360
+ Returns
361
+ -------
362
+ pd.DataFrame
363
+ Historical regional load factor for each day.
364
+
365
+ Notes
366
+ -----
367
+ The monthly **passenger load factor** for each region is compiled from IATA's monthly
368
+ publication of the Air Passenger Market Analysis, where the static file will be continuously
369
+ updated. The report estimates the regional passenger load factor by dividing the revenue
370
+ passenger-km (RPK) by the available seat-km (ASK).
371
+
372
+ The monthly **cargo load factor** for each region is compiled from IATA's monthly publication
373
+ of the Air Cargo Market Analysis, where the static file will be continuously updated.
374
+ The report estimates the regional cargo load factor by dividing the freight tonne-km (FTK)
375
+ by the available freight tonne-km (AFTK).
376
+ """
377
+ df = pd.read_csv(path, index_col="Date", parse_dates=True, date_format="%d/%m/%Y")
378
+ return df.resample("D").interpolate()
379
+
380
+
381
+ AIRPORT_TO_REGION = {
382
+ "A": "Asia Pacific",
383
+ "B": "Europe",
384
+ "C": "North America",
385
+ "D": "Africa",
386
+ "E": "Europe",
387
+ "F": "Africa",
388
+ "G": "Africa",
389
+ "H": "Africa",
390
+ "K": "North America",
391
+ "L": "Europe",
392
+ "M": "Latin America",
393
+ "N": "Asia Pacific",
394
+ "O": "Middle East",
395
+ "P": "Asia Pacific",
396
+ "R": "Asia Pacific",
397
+ "S": "Latin America",
398
+ "T": "Latin America",
399
+ "U": "Asia Pacific",
400
+ "V": "Asia Pacific",
401
+ "W": "Asia Pacific",
402
+ "Y": "Asia Pacific",
403
+ "Z": "Asia Pacific",
404
+ }
405
+
406
+
407
+ def aircraft_load_factor(
408
+ origin_airport_icao: str | None = None,
409
+ first_waypoint_time: pd.Timestamp | None = None,
410
+ *,
411
+ freighter: bool = False,
412
+ ) -> float:
413
+ """
414
+ Estimate passenger/cargo load factor based on historical data.
415
+
416
+ Accounts for regional and seasonal differences.
417
+
418
+ Parameters
419
+ ----------
420
+ origin_airport_icao : str | None
421
+ ICAO code of origin airport. If None is provided, then globally averaged values will be
422
+ assumed at `first_waypoint_time`.
423
+ first_waypoint_time : pd.Timestamp | None
424
+ First waypoint UTC time. If None is provided, then regionally or globally averaged values
425
+ from the trailing twelve months will be used.
426
+ freighter: bool
427
+ Historical cargo load factor will be used if true, otherwise use passenger load factor.
428
+
429
+ Returns
430
+ -------
431
+ float
432
+ Passenger/cargo load factor [0 - 1], unitless
433
+ """
434
+ # If origin airport is provided, use regional load factor
435
+ if origin_airport_icao is not None:
436
+ first_letter = origin_airport_icao[0]
437
+ region = AIRPORT_TO_REGION.get(first_letter, "Global")
438
+ else:
439
+ region = "Global"
440
+
441
+ # Use passenger or cargo database
442
+ if freighter:
443
+ lf_database = _historical_regional_load_factor(CLF_PATH)
444
+ else:
445
+ lf_database = _historical_regional_load_factor(PLF_PATH)
446
+
447
+ # If `first_waypoint_time` is None, global/regional averages for the trailing twelve months
448
+ # will be assumed.
449
+ if first_waypoint_time is None:
450
+ t1 = lf_database.index[-1]
451
+ t0 = t1 - pd.DateOffset(months=12) + pd.DateOffset(days=1)
452
+ return lf_database.loc[t0:t1, region].mean().item()
453
+
454
+ date = first_waypoint_time.floor("D")
455
+
456
+ # If `date` is more recent than the historical data, then use most recent load factors
457
+ # from trailing twelve months as seasonal values are stable except in COVID years (2020-22).
458
+ if date > lf_database.index[-1]:
459
+ if date.month == 2 and date.day == 29: # remove any leap day
460
+ date = date.replace(day=28)
461
+
462
+ filt = (lf_database.index.month == date.month) & (lf_database.index.day == date.day)
463
+ date = lf_database.index[filt][-1]
464
+
465
+ # (2) If `date` is before the historical data, then use 2019 load factors.
466
+ elif date < lf_database.index[0]:
467
+ if date.month == 2 and date.day == 29: # remove any leap day
468
+ date = date.replace(day=28)
469
+
470
+ filt = (lf_database.index.month == date.month) & (lf_database.index.day == date.day)
471
+ date = lf_database.index[filt][0]
472
+
473
+ return lf_database.at[date, region].item()
474
+
475
+
348
476
  def aircraft_weight(aircraft_mass: ArrayOrFloat) -> ArrayOrFloat:
349
477
  """Calculate the aircraft weight at each waypoint.
350
478
 
@@ -413,7 +541,8 @@ def initial_aircraft_mass(
413
541
 
414
542
  See Also
415
543
  --------
416
- :func:`reserve_fuel_requirements`
544
+ reserve_fuel_requirements
545
+ aircraft_load_factor
417
546
  """
418
547
  tom = operating_empty_weight + load_factor * max_payload + total_fuel_burn + total_reserve_fuel
419
548
  return min(tom, max_takeoff_weight)
@@ -463,9 +592,10 @@ def update_aircraft_mass(
463
592
 
464
593
  See Also
465
594
  --------
466
- :func:`fuel_burn`
467
- :func:`reserve_fuel_requirements`
468
- :func:`initial_aircraft_mass`
595
+ fuel_burn
596
+ reserve_fuel_requirements
597
+ initial_aircraft_mass
598
+ aircraft_load_factor
469
599
  """
470
600
  if takeoff_mass is None:
471
601
  takeoff_mass = initial_aircraft_mass(
@@ -0,0 +1,71 @@
1
+ Date,Global,Africa,Asia Pacific,Europe,Latin America,Middle East,North America
2
+ 15/12/2018,0.488,0.381,0.54,0.567,0.291,0.488,0.414
3
+ 15/1/2019,0.451,0.354,0.501,0.501,0.299,0.421,0.4
4
+ 15/2/2019,0.447,0.363,0.473,0.53,0.297,0.466,0.379
5
+ 15/3/2019,0.495,0.384,0.556,0.56,0.323,0.488,0.416
6
+ 15/4/2019,0.463,0.374,0.518,0.496,0.325,0.458,0.405
7
+ 15/5/2019,0.468,0.386,0.52,0.513,0.353,0.469,0.398
8
+ 15/6/2019,0.454,0.324,0.522,0.498,0.337,0.44,0.382
9
+ 15/7/2019,0.45,0.323,0.519,0.485,0.354,0.453,0.373
10
+ 15/8/2019,0.446,0.302,0.516,0.477,0.372,0.435,0.377
11
+ 15/9/2019,0.464,0.329,0.539,0.501,0.379,0.459,0.381
12
+ 15/10/2019,0.477,0.361,0.539,0.533,0.364,0.477,0.394
13
+ 15/11/2019,0.496,0.404,0.538,0.569,0.403,0.497,0.413
14
+ 15/12/2019,0.467,0.368,0.519,0.53,0.3,0.47,0.395
15
+ 15/1/2020,0.45,0.356,0.474,0.501,0.311,0.426,0.424
16
+ 15/2/2020,0.464,0.368,0.543,0.531,0.342,0.461,0.372
17
+ 15/3/2020,0.545,0.425,0.656,0.63,0.411,0.532,0.429
18
+ 15/4/2020,0.58,0.486,0.691,0.648,0.554,0.525,0.487
19
+ 15/5/2020,0.576,0.612,0.643,0.625,0.561,0.483,0.526
20
+ 15/6/2020,0.573,0.547,0.645,0.62,0.512,0.494,0.521
21
+ 15/7/2020,0.564,0.489,0.639,0.594,0.464,0.53,0.506
22
+ 15/8/2020,0.548,0.502,0.616,0.568,0.478,0.535,0.489
23
+ 15/9/2020,0.569,0.507,0.642,0.62,0.456,0.579,0.484
24
+ 15/10/2020,0.576,0.502,0.617,0.651,0.443,0.606,0.496
25
+ 15/11/2020,0.582,0.496,0.631,0.655,0.436,0.6,0.5
26
+ 15/12/2020,0.573,0.51,0.639,0.653,0.367,0.597,0.482
27
+ 15/1/2021,0.589,0.48,0.665,0.627,0.39,0.569,0.532
28
+ 15/2/2021,0.575,0.476,0.692,0.641,0.429,0.598,0.453
29
+ 15/3/2021,0.588,0.499,0.661,0.685,0.453,0.613,0.472
30
+ 15/4/2021,0.578,0.504,0.633,0.681,0.457,0.598,0.473
31
+ 15/5/2021,0.572,0.502,0.646,0.656,0.423,0.589,0.469
32
+ 15/6/2021,0.565,0.48,0.676,0.626,0.381,0.581,0.458
33
+ 15/7/2021,0.544,0.455,0.654,0.598,0.387,0.536,0.443
34
+ 15/8/2021,0.542,0.43,0.698,0.575,0.404,0.529,0.437
35
+ 15/9/2021,0.553,0.428,0.68,0.604,0.37,0.558,0.447
36
+ 15/10/2021,0.561,0.45,0.661,0.626,0.421,0.572,0.449
37
+ 15/11/2021,0.559,0.434,0.654,0.631,0.446,0.572,0.444
38
+ 15/12/2021,0.542,0.502,0.634,0.623,0.413,0.556,0.43
39
+ 15/1/2022,0.541,0.492,0.609,0.584,0.417,0.513,0.474
40
+ 15/2/2022,0.532,0.502,0.592,0.636,0.476,0.529,0.429
41
+ 15/3/2022,0.549,0.494,0.638,0.671,0.448,0.526,0.442
42
+ 15/4/2022,0.516,0.49,0.631,0.578,0.419,0.504,0.419
43
+ 15/5/2022,0.505,0.495,0.627,0.548,0.387,0.487,0.411
44
+ 15/6/2022,0.492,0.447,0.608,0.507,0.383,0.488,0.404
45
+ 15/7/2022,0.472,0.452,0.563,0.493,0.374,0.469,0.398
46
+ 15/8/2022,0.467,0.418,0.547,0.502,0.374,0.466,0.393
47
+ 15/9/2022,0.481,0.451,0.572,0.528,0.381,0.478,0.396
48
+ 15/10/2022,0.487,0.437,0.561,0.558,0.384,0.48,0.401
49
+ 15/11/2022,0.491,0.458,0.545,0.569,0.382,0.475,0.419
50
+ 15/12/2022,0.472,0.432,0.528,0.559,0.322,0.454,0.406
51
+ 15/1/2023,0.448,0.439,0.452,0.541,0.325,0.411,0.423
52
+ 15/2/2023,0.456,0.468,0.464,0.574,0.361,0.445,0.4
53
+ 15/3/2023,0.462,0.489,0.485,0.57,0.366,0.456,0.393
54
+ 15/4/2023,0.427,0.482,0.442,0.497,0.364,0.431,0.373
55
+ 15/5/2023,0.415,0.448,0.422,0.489,0.333,0.41,0.373
56
+ 15/6/2023,0.432,0.446,0.468,0.476,0.337,0.446,0.374
57
+ 15/7/2023,0.421,0.417,0.457,0.472,0.322,0.411,0.37
58
+ 15/8/2023,0.42,0.388,0.443,0.484,0.326,0.407,0.377
59
+ 15/9/2023,0.438,0.436,0.466,0.5,0.319,0.424,0.392
60
+ 15/10/2023,0.452,0.416,0.472,0.53,0.354,0.46,0.392
61
+ 15/11/2023,0.467,0.421,0.479,0.57,0.363,0.469,0.408
62
+ 15/12/2023,0.459,0.41,0.479,0.562,0.316,0.455,0.403
63
+ 15/1/2024,0.457,0.431,0.446,0.555,0.344,0.439,0.435
64
+ 15/2/2024,0.451,0.451,0.432,0.584,0.376,0.463,0.396
65
+ 15/3/2024,0.473,0.473,0.475,0.581,0.402,0.496,0.404
66
+ 15/4/2024,0.439,0.429,0.445,0.515,0.387,0.447,0.387
67
+ 15/5/2024,0.446,0.438,0.453,0.518,0.362,0.461,0.397
68
+ 15/6/2024,0.458,0.385,0.496,0.507,0.336,0.473,0.388
69
+ 15/7/2024,0.444,0.4,0.48,0.496,0.338,0.458,0.382
70
+ 15/8/2024,0.44,0.378,0.466,0.501,0.359,0.445,0.387
71
+ 15/9/2024,0.456,0.392,0.485,0.525,0.368,0.474,0.389
@@ -0,0 +1,71 @@
1
+ Date,Global,Africa,Asia Pacific,Europe,Latin America,Middle East,North America
2
+ 15/12/2018,0.804,0.724,0.81,0.81,0.818,0.736,0.825
3
+ 15/1/2019,0.796,0.709,0.81,0.796,0.825,0.76,0.795
4
+ 15/2/2019,0.806,0.704,0.826,0.815,0.813,0.726,0.808
5
+ 15/3/2019,0.817,0.72,0.812,0.837,0.815,0.739,0.85
6
+ 15/4/2019,0.828,0.733,0.817,0.851,0.822,0.803,0.839
7
+ 15/5/2019,0.815,0.676,0.802,0.837,0.832,0.732,0.851
8
+ 15/6/2019,0.844,0.706,0.821,0.875,0.832,0.767,0.887
9
+ 15/7/2019,0.857,0.735,0.831,0.89,0.853,0.812,0.888
10
+ 15/8/2019,0.857,0.755,0.839,0.889,0.833,0.821,0.875
11
+ 15/9/2019,0.819,0.721,0.801,0.866,0.819,0.75,0.828
12
+ 15/10/2019,0.82,0.697,0.815,0.855,0.819,0.734,0.841
13
+ 15/11/2019,0.818,0.708,0.813,0.833,0.822,0.732,0.828
14
+ 15/12/2019,0.823,0.724,0.816,0.828,0.825,0.78,0.859
15
+ 15/1/2020,0.803,0.702,0.799,0.816,0.826,0.785,0.812
16
+ 15/2/2020,0.759,0.668,0.678,0.813,0.812,0.725,0.811
17
+ 15/3/2020,0.606,0.609,0.589,0.67,0.681,0.599,0.557
18
+ 15/4/2020,0.366,0.111,0.538,0.32,0.55,0.284,0.15
19
+ 15/5/2020,0.507,0.071,0.62,0.427,0.623,0.255,0.381
20
+ 15/6/2020,0.576,0.162,0.638,0.555,0.666,0.357,0.524
21
+ 15/7/2020,0.579,0.296,0.657,0.609,0.631,0.396,0.476
22
+ 15/8/2020,0.585,0.39,0.65,0.635,0.639,0.372,0.477
23
+ 15/9/2020,0.601,0.378,0.692,0.586,0.706,0.365,0.525
24
+ 15/10/2020,0.602,0.482,0.687,0.552,0.721,0.387,0.558
25
+ 15/11/2020,0.58,0.474,0.664,0.523,0.74,0.372,0.518
26
+ 15/12/2020,0.575,0.549,0.616,0.578,0.73,0.44,0.516
27
+ 15/1/2021,0.541,0.544,0.566,0.576,0.685,0.422,0.484
28
+ 15/2/2021,0.554,0.516,0.591,0.563,0.683,0.398,0.527
29
+ 15/3/2021,0.623,0.53,0.669,0.593,0.708,0.422,0.624
30
+ 15/4/2021,0.633,0.476,0.678,0.563,0.723,0.404,0.668
31
+ 15/5/2021,0.658,0.53,0.678,0.593,0.768,0.389,0.728
32
+ 15/6/2021,0.696,0.587,0.657,0.658,0.784,0.459,0.806
33
+ 15/7/2021,0.731,0.614,0.675,0.725,0.793,0.513,0.841
34
+ 15/8/2021,0.7,0.64,0.545,0.746,0.774,0.56,0.786
35
+ 15/9/2021,0.676,0.56,0.605,0.719,0.773,0.524,0.727
36
+ 15/10/2021,0.706,0.558,0.629,0.741,0.809,0.577,0.769
37
+ 15/11/2021,0.713,0.616,0.597,0.752,0.822,0.616,0.786
38
+ 15/12/2021,0.723,0.647,0.625,0.745,0.816,0.663,0.793
39
+ 15/1/2022,0.645,0.623,0.576,0.682,0.782,0.591,0.663
40
+ 15/2/2022,0.698,0.648,0.629,0.721,0.795,0.648,0.745
41
+ 15/3/2022,0.747,0.657,0.642,0.739,0.808,0.718,0.839
42
+ 15/4/2022,0.778,0.68,0.67,0.795,0.809,0.713,0.858
43
+ 15/5/2022,0.794,0.696,0.696,0.807,0.807,0.762,0.86
44
+ 15/6/2022,0.824,0.743,0.729,0.86,0.817,0.772,0.891
45
+ 15/7/2022,0.835,0.753,0.764,0.87,0.831,0.812,0.882
46
+ 15/8/2022,0.818,0.757,0.74,0.862,0.824,0.796,0.856
47
+ 15/9/2022,0.816,0.743,0.747,0.847,0.823,0.795,0.855
48
+ 15/10/2022,0.82,0.726,0.755,0.848,0.833,0.791,0.864
49
+ 15/11/2022,0.808,0.748,0.77,0.838,0.82,0.775,0.832
50
+ 15/12/2022,0.811,0.769,0.772,0.836,0.785,0.8,0.842
51
+ 15/1/2023,0.777,0.742,0.774,0.762,0.813,0.791,0.784
52
+ 15/2/2023,0.778,0.756,0.792,0.752,0.811,0.798,0.771
53
+ 15/3/2023,0.807,0.739,0.792,0.805,0.812,0.794,0.837
54
+ 15/4/2023,0.813,0.708,0.784,0.838,0.814,0.76,0.856
55
+ 15/5/2023,0.818,0.699,0.773,0.848,0.811,0.799,0.863
56
+ 15/6/2023,0.842,0.689,0.804,0.877,0.825,0.794,0.887
57
+ 15/7/2023,0.852,0.746,0.816,0.877,0.867,0.821,0.897
58
+ 15/8/2023,0.846,0.764,0.822,0.876,0.851,0.83,0.858
59
+ 15/9/2023,0.826,0.731,0.8,0.86,0.839,0.816,0.83
60
+ 15/10/2023,0.831,0.707,0.821,0.856,0.848,0.806,0.836
61
+ 15/11/2023,0.818,0.704,0.814,0.837,0.844,0.777,0.827
62
+ 15/12/2023,0.821,0.732,0.812,0.851,0.827,0.782,0.829
63
+ 15/1/2024,0.799,0.731,0.808,0.782,0.85,0.799,0.799
64
+ 15/2/2024,0.806,0.744,0.844,0.761,0.827,0.808,0.795
65
+ 15/3/2024,0.82,0.721,0.835,0.809,0.831,0.775,0.837
66
+ 15/4/2024,0.824,0.734,0.824,0.838,0.822,0.792,0.83
67
+ 15/5/2024,0.834,0.729,0.818,0.852,0.834,0.808,0.858
68
+ 15/6/2024,0.85,0.771,0.829,0.877,0.842,0.795,0.876
69
+ 15/7/2024,0.86,0.75,0.834,0.882,0.862,0.84,0.889
70
+ 15/8/2024,0.862,0.779,0.86,0.879,0.84,0.823,0.871
71
+ 15/9/2024,0.836,0.765,0.831,0.865,0.834,0.814,0.824
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycontrails
3
- Version: 0.54.2
3
+ Version: 0.54.3
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
@@ -31,15 +31,15 @@ Requires-Dist: dask>=2022.3
31
31
  Requires-Dist: numpy>=1.22
32
32
  Requires-Dist: pandas>=2.2
33
33
  Requires-Dist: scipy>=1.10
34
- Requires-Dist: xarray>=2022.3
35
34
  Requires-Dist: typing-extensions>=4.5; python_version < "3.12"
35
+ Requires-Dist: xarray>=2022.3
36
36
  Provides-Extra: complete
37
37
  Requires-Dist: pycontrails[ecmwf,gcp,gfs,jupyter,pyproj,sat,vis,zarr]; extra == "complete"
38
38
  Provides-Extra: dev
39
- Requires-Dist: dep-license; extra == "dev"
39
+ Requires-Dist: dep_license; extra == "dev"
40
40
  Requires-Dist: fastparquet>=0.8; extra == "dev"
41
41
  Requires-Dist: ipdb>=0.13; extra == "dev"
42
- Requires-Dist: memory-profiler; extra == "dev"
42
+ Requires-Dist: memory_profiler; extra == "dev"
43
43
  Requires-Dist: mypy>=1.8; extra == "dev"
44
44
  Requires-Dist: mypy-extensions>=1.0; extra == "dev"
45
45
  Requires-Dist: platformdirs>=3.0; extra == "dev"
@@ -62,7 +62,7 @@ Requires-Dist: pytest-check-links>=0.8.0; extra == "docs"
62
62
  Requires-Dist: sphinx>=4.2; extra == "docs"
63
63
  Requires-Dist: sphinx-autobuild>=0.7; extra == "docs"
64
64
  Requires-Dist: sphinxcontrib-bibtex>=2.2; extra == "docs"
65
- Requires-Dist: sphinx-copybutton>=0.5; extra == "docs"
65
+ Requires-Dist: sphinx_copybutton>=0.5; extra == "docs"
66
66
  Requires-Dist: sphinxext.opengraph>=0.8; extra == "docs"
67
67
  Provides-Extra: ecmwf
68
68
  Requires-Dist: cdsapi>=0.4; extra == "ecmwf"
@@ -86,10 +86,6 @@ Requires-Dist: tqdm>=4.61; extra == "gfs"
86
86
  Provides-Extra: jupyter
87
87
  Requires-Dist: ipywidgets>=7.6; extra == "jupyter"
88
88
  Requires-Dist: jupyterlab>=2.2; extra == "jupyter"
89
- Provides-Extra: open3d
90
- Requires-Dist: open3d>=0.14; extra == "open3d"
91
- Provides-Extra: pyproj
92
- Requires-Dist: pyproj>=3.5; extra == "pyproj"
93
89
  Provides-Extra: sat
94
90
  Requires-Dist: cartopy>=0.22; extra == "sat"
95
91
  Requires-Dist: db-dtypes>=1.2; extra == "sat"
@@ -101,6 +97,10 @@ Requires-Dist: pillow>=10.3; extra == "sat"
101
97
  Requires-Dist: pyproj>=3.5; extra == "sat"
102
98
  Requires-Dist: rasterio>=1.3; extra == "sat"
103
99
  Requires-Dist: scikit-image>=0.18; extra == "sat"
100
+ Provides-Extra: open3d
101
+ Requires-Dist: open3d>=0.14; extra == "open3d"
102
+ Provides-Extra: pyproj
103
+ Requires-Dist: pyproj>=3.5; extra == "pyproj"
104
104
  Provides-Extra: vis
105
105
  Requires-Dist: matplotlib>=3.3; extra == "vis"
106
106
  Requires-Dist: opencv-python-headless>=4.5; extra == "vis"
@@ -1,39 +1,39 @@
1
- pycontrails-0.54.2.dist-info/RECORD,,
2
- pycontrails-0.54.2.dist-info/LICENSE,sha256=gJ-h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA,10175
3
- pycontrails-0.54.2.dist-info/WHEEL,sha256=lXrF9eVJm7UF3ZOBaBu2Y-RekBGubHbC1Bvbd4BEjAQ,109
4
- pycontrails-0.54.2.dist-info/NOTICE,sha256=gKI8DcN1WhiXB2SFRKDogcjONldGubTvBxiOYdC4CXU,1926
5
- pycontrails-0.54.2.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
6
- pycontrails-0.54.2.dist-info/METADATA,sha256=Fm8kdIUhPRgD-eRj7pBLueySnBEN_UFAdNVOG0SbVMs,9155
7
- pycontrails/_version.py,sha256=33yLgIixdFTAGWrLITOqgOcd0-lN-NKDJoFWt4PSyGE,413
1
+ pycontrails-0.54.3.dist-info/RECORD,,
2
+ pycontrails-0.54.3.dist-info/LICENSE,sha256=gJ-h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA,10175
3
+ pycontrails-0.54.3.dist-info/WHEEL,sha256=HYqjRdli_HnmdRYswLM91KP1v-KILRKMRXsFGStbfQs,109
4
+ pycontrails-0.54.3.dist-info/NOTICE,sha256=gKI8DcN1WhiXB2SFRKDogcjONldGubTvBxiOYdC4CXU,1926
5
+ pycontrails-0.54.3.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
6
+ pycontrails-0.54.3.dist-info/METADATA,sha256=C-AQmsl9BCEOq3uYE98wt4VqxgHk1jG-CikW3gx_roQ,9155
7
+ pycontrails/_version.py,sha256=7QYGH-f_2cGLboKHTnjskdE1bAwKooUfvPbzgBdc_tw,413
8
8
  pycontrails/__init__.py,sha256=O2T9kXCMhcELcMZz7HEnwiBhh4Gfcj-yG1HtrotOKHQ,2001
9
9
  pycontrails/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  pycontrails/core/vector.py,sha256=d0nzDeMFHzPjxqU4nbeb8i6a7hNCJr8qZU6CXEXtxCw,70042
11
11
  pycontrails/core/models.py,sha256=mB3fhmBorFxt7uEhBFcuu0PIMWmBRB4KBRsPiFpPcvo,39282
12
12
  pycontrails/core/interpolation.py,sha256=yxVLO9lzNcNFeLwDyrQ7yfz4JEHLHTpgIRBrcOezsXg,25617
13
13
  pycontrails/core/fleet.py,sha256=s-4v3QtUIyIxdFc-f7sAaDGgmWqugR8H5uWsdnszYTI,15739
14
- pycontrails/core/rgi_cython.cpython-310-darwin.so,sha256=s2iTOboEDI2LVha5-eI3oIxNpYdoKq40q0-FA7VOrdU,310832
15
- pycontrails/core/flight.py,sha256=VL2vi3YYW6TaUeBFf0TKTiCsaDmltN8c31WCKGWwjE8,82937
14
+ pycontrails/core/rgi_cython.cpython-310-darwin.so,sha256=pn6gDeRH1itU1L_gYQ4KxDQ5jEFh1rdLIv_JpQryFsU,310832
15
+ pycontrails/core/flight.py,sha256=ptBHbDZdmKpIzvun7732eTRgaZvHT7PcmTwHwAoTS_w,83100
16
16
  pycontrails/core/fuel.py,sha256=kJZ3P1lPm1L6rdPREM55XQ-VfJ_pt35cP4sO2Nnvmjs,4332
17
17
  pycontrails/core/polygon.py,sha256=gosyZBX1XBKD2EcHycIZb7uM-xGs8rCfdpiSZlhc2Hc,18028
18
18
  pycontrails/core/cache.py,sha256=7kGStSlHgF1JzU8piRCHVKuWHRECvsyTBemBs0jxplk,28068
19
19
  pycontrails/core/__init__.py,sha256=x1z6x8w3sYmEqYcNWyWHuNkS9lPUPbHUoYJZs1K0q98,856
20
20
  pycontrails/core/flightplan.py,sha256=UO4vL087d5TZMlU984-FxfotGTxFbqK78w2fLDRiel4,7335
21
21
  pycontrails/core/met.py,sha256=eCM4qJlNZNWLQt0USWIZBaDxxayHhta1tpRx37rBPY4,100821
22
- pycontrails/core/aircraft_performance.py,sha256=uyT26bBYgQHOf3U3YVhR91BkSLCpaW6DBGmwmogDRB0,26417
22
+ pycontrails/core/aircraft_performance.py,sha256=zo4DKKfLQYRBkoQ64Dwh53FSlDAO41NHiHi6zZ8l8nA,27178
23
23
  pycontrails/core/airports.py,sha256=aeyAXVkioIRomrP79UtNrxindL4f1DJyXFaojZCuBBw,6758
24
24
  pycontrails/core/met_var.py,sha256=GC5ijw4oGuIefmFOSz4vmxMEBj_SVs5Z75IMhDP56Cw,9183
25
25
  pycontrails/core/coordinates.py,sha256=0ySsHtqTon7GMbuwmmxMbI92j3ueMteJZh4xxNm5zto,5391
26
26
  pycontrails/datalib/goes.py,sha256=Muh_pqAXSqUlM4ssStUT9QmPxGPEKK21LHFroaqTq7k,26533
27
- pycontrails/datalib/landsat.py,sha256=wgQrc0sF-OqtCLbMINjes0hRFMUYJRYU0K6aV0gVJvg,19721
27
+ pycontrails/datalib/landsat.py,sha256=r6366rEF7fOA7mT5KySCPGJplgGE5LvBw5fMqk-U1oM,19697
28
28
  pycontrails/datalib/spire.py,sha256=66SnMdA8KOS69USjKmqrJmTKPK08Ehih9tnlsCt-AJw,25331
29
29
  pycontrails/datalib/__init__.py,sha256=hW9NWdFPC3y_2vHMteQ7GgQdop3917MkDaf5ZhU2RBY,369
30
- pycontrails/datalib/sentinel.py,sha256=pKB92KzKjvNOKnuxolXoz2ZnpXQ50iQ8g-EHDVMsnoA,17221
30
+ pycontrails/datalib/sentinel.py,sha256=hYSxIlQnyJHqtHWlKn73HOK_1pm-_IbGebmkHnh4UcA,17172
31
31
  pycontrails/datalib/_met_utils/metsource.py,sha256=BGActBGApWb4yI97nBS9ui5j-PzIQotFMUtbMEBkvm8,23966
32
32
  pycontrails/datalib/ecmwf/arco_era5.py,sha256=7HXQU5S02PzX9Ew2ZrDKSp0tDEG1eeVAvbP3decmm20,12437
33
33
  pycontrails/datalib/ecmwf/era5.py,sha256=QPkb5a8qW7yWpEq9wMiitql6V6kCHwdk9XNki_dlnZ4,19104
34
34
  pycontrails/datalib/ecmwf/era5_model_level.py,sha256=KP4a9l2YbEhBPraN1LDx_I_OsOaJemAheW3gICqe5uA,19428
35
35
  pycontrails/datalib/ecmwf/hres.py,sha256=7oGNi6FnLFIA5rCVVX5lRv_maXVMa2oqVPlT-sgFHsM,28325
36
- pycontrails/datalib/ecmwf/variables.py,sha256=G6LlGTrlzdn819F-7kjEMXT-Ystp1gc79LOmQTZKrtQ,9865
36
+ pycontrails/datalib/ecmwf/variables.py,sha256=lU3BNe265XVhCXvdMwZqfkWQwtsetZxVRLSfPqHFKAE,9913
37
37
  pycontrails/datalib/ecmwf/hres_model_level.py,sha256=EjBDYbbPZotTsveFlEiAAWJhhPYiao1DQrLyS4kVCrA,17657
38
38
  pycontrails/datalib/ecmwf/__init__.py,sha256=7OovwVTCo2DVH10NioUAc18evZkgb9b7Tn42S7tsJfU,2021
39
39
  pycontrails/datalib/ecmwf/common.py,sha256=MCnOYb7Whz5M7s9iy91P6nNAu8in9x20-C8p_UQnuas,3996
@@ -46,10 +46,10 @@ pycontrails/datalib/_leo_utils/static/bq_roi_query.sql,sha256=xq6-tJyz0-bUwW0KjQ
46
46
  pycontrails/datalib/gfs/gfs.py,sha256=v7LZ1cdY3H3Las2PoVAdlW3CuMgzlOf7WW6SyD3Qt1c,22382
47
47
  pycontrails/datalib/gfs/variables.py,sha256=4ALR4zhYW8tQVlNVHrd0CK8oRNSe_2OkW3ELeaImtAI,3135
48
48
  pycontrails/datalib/gfs/__init__.py,sha256=tWxgqmlW8Uo07J-3fBTXPrteatzTka9mSXomhWy3NVA,684
49
- pycontrails/ext/synthetic_flight.py,sha256=0mgS6DuwY2ZTzQBswRqh_CsqkUV8K4vGH1leynoz05U,16757
49
+ pycontrails/ext/synthetic_flight.py,sha256=ByuJDfpuK5WaGMj41wflfzH6zwI1nejVcQXC4JoMvSI,16795
50
50
  pycontrails/ext/cirium.py,sha256=DFPfRwLDwddpucAPRQhyT4bDGh0VvvoViMUd3pidam8,415
51
51
  pycontrails/ext/empirical_grid.py,sha256=WSC266aKsQLzCmtrZJCpLdDBykZ9rlFE9xEXmZjbgHo,4362
52
- pycontrails/ext/bada.py,sha256=j4Tj7oWSV_6UxYYa9_OjC1yTVzJMQdNRDI4aUQam_xM,1063
52
+ pycontrails/ext/bada.py,sha256=YlQq4nnFyWza1Am2e2ZucpaICHDuUFRTrtVzIKMzf9s,1091
53
53
  pycontrails/utils/iteration.py,sha256=q_vb39VjxRr4hqTyPYko3gK4sboJOJf_Evq6m_2DL-g,319
54
54
  pycontrails/utils/__init__.py,sha256=Gt_57sBgfliFSxx9sDpuchykFDxmM11Wg9xAeSqPcnI,32
55
55
  pycontrails/utils/types.py,sha256=QeJQwpdyjd3OGU9bz86mIuZvvqgV3WoF0QpAZenD6u8,4769
@@ -61,8 +61,8 @@ pycontrails/models/tau_cirrus.py,sha256=yNYw4ukT68w2ATGFZr3p8AZxB6A2xufXQq7XP2U5
61
61
  pycontrails/models/__init__.py,sha256=dQTOLQb7RdUdUwslt5se__5y_ymbInBexQmNrmAeOdE,33
62
62
  pycontrails/models/issr.py,sha256=Ts1rFr8XKqvq-hWTLzp285PDEt9J_kIR8V3XGCDqoxY,7340
63
63
  pycontrails/models/sac.py,sha256=lV1Or0AaLxuS1Zo5V8h5c1fkSKC-hKEgiFm7bmmusWw,15946
64
- pycontrails/models/accf.py,sha256=uPu8EB30Zbd3kd-3BuTnJkFNzpFqQ4u0HftFOJOX51s,12568
65
- pycontrails/models/dry_advection.py,sha256=V3_oEYexGaeBnuOgmuj8a3FaxMVnMRvHIX_AVXXtWTg,16697
64
+ pycontrails/models/accf.py,sha256=meIcgojYvHgm3de9iro2Bv0M4y9ta5VPwcqGAMEbBp8,13663
65
+ pycontrails/models/dry_advection.py,sha256=7OeEC6i6Bj-oFE1s6jNWLCdocKjA148pCzNT-VcNylQ,16842
66
66
  pycontrails/models/pcr.py,sha256=ZzbEuTOuDdUmmL5T3Wk3HL-O8XzX3HMnn98WcPbASaU,5348
67
67
  pycontrails/models/emissions/__init__.py,sha256=N_EE768TNRDbdmXaxly2Pwun7UmVBTVPc4k89VBz5ys,478
68
68
  pycontrails/models/emissions/ffm2.py,sha256=h_bmB4pxxvC1ptqz5jB_rpf9QgaAv9J7Lu-6QpMiFtk,12032
@@ -74,7 +74,7 @@ pycontrails/models/emissions/static/default-engine-uids.csv,sha256=3blb0aqtM8YRs
74
74
  pycontrails/models/apcemm/__init__.py,sha256=M-hrJklbSgBckclm526MiBAhpKPLHgJbB58ArbJuGIk,175
75
75
  pycontrails/models/apcemm/inputs.py,sha256=88GylkiaymEW_XZeFxLsICI9wV6kl8wVYsuyTe8zIQ8,6585
76
76
  pycontrails/models/apcemm/utils.py,sha256=xlEVe0RKFXrqDr4V77mbb2HxY8IK42EX4K86tN1sLQs,17094
77
- pycontrails/models/apcemm/apcemm.py,sha256=Qo3CdpQ5JULUit7Oi2l2_Mu8JXcW0QOYfQOyaL66ldM,39936
77
+ pycontrails/models/apcemm/apcemm.py,sha256=keBzWM46IVSj67jXSEalSQf-BGerKb2FfXzeh-zhzfo,39999
78
78
  pycontrails/models/apcemm/static/apcemm_yaml_template.yaml,sha256=uAZkc57OUvDMjgX6F5f6hgDh3Hgg1NbHWRUFSiv0DEI,6745
79
79
  pycontrails/models/humidity_scaling/humidity_scaling.py,sha256=7o2jTRfOqTkqAQPYQ-CdZAm5V5IZsp_RrVbTCQCdvZY,36745
80
80
  pycontrails/models/humidity_scaling/__init__.py,sha256=nqsab_j9BCwMbTfCn4BjXMdhItlvNKkgUJ9-lb8RyIo,1119
@@ -82,7 +82,7 @@ pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq,s
82
82
  pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq,sha256=pShCvNUo0NYtAHhT9IBRuj38X9jejdlKfv-ZoOKmtKI,35943
83
83
  pycontrails/models/cocip/radiative_forcing.py,sha256=aA4ZHaVOsg0lro04LwwKaBf3mXljRAzbwQpDLaxk4qU,44873
84
84
  pycontrails/models/cocip/wind_shear.py,sha256=p8d3iaNzxPA3MoxFEM1ZDKt0aticoD6U9cv0QmbuBzs,3860
85
- pycontrails/models/cocip/cocip.py,sha256=hd5v3LtKomVGz2vUGHDIbffrip975utSun5iZKwRWA8,100180
85
+ pycontrails/models/cocip/cocip.py,sha256=ibiMDZgHzBaJ14sXsfOu7jh1nQgx0vomwxKMXsfApJA,100140
86
86
  pycontrails/models/cocip/output_formats.py,sha256=7P0j-UX4NNw56Gkd3ZsWDt0ctorJTZ4aPmUiibAh1FM,83641
87
87
  pycontrails/models/cocip/__init__.py,sha256=jd-9Tq20s1kwQBlxsYfZLi3hlT5MnWOY2XsPazq1fgE,962
88
88
  pycontrails/models/cocip/cocip_params.py,sha256=kKTeF1vVQr361XBR79q4mQHYI7UUQ6C5Ik5Z5pJDtag,12703
@@ -91,19 +91,21 @@ pycontrails/models/cocip/cocip_uncertainty.py,sha256=-3ICEbrhB6eQiYIqpEahzhf12Aw
91
91
  pycontrails/models/cocip/radiative_heating.py,sha256=YRpwfXgFnf89iuJiIM96q-jbdcMAwlX8QLsADTKMABE,18848
92
92
  pycontrails/models/cocip/contrail_properties.py,sha256=tycCxKf8j9GvVYDQBPxjtp6xLll-r00C0XW-w1jGbMI,55594
93
93
  pycontrails/models/cocip/unterstrasser_wake_vortex.py,sha256=kDxFpAIkcqqhGmwXoxv3_cSESj1Ur45GbLJF56IACJs,14573
94
- pycontrails/models/ps_model/__init__.py,sha256=5L-HympF1gJaZ6xiNkIQJygJhkDxM3-ejS_T2z-83hQ,495
95
- pycontrails/models/ps_model/ps_model.py,sha256=l9ukna7amMvdq03Mk1wqw9JmBUWhpEGAqLoWWutg_4I,33502
96
- pycontrails/models/ps_model/ps_aircraft_params.py,sha256=-PfT2JC6RckVi_zTDVTqAMyaS-id6I2klUoXoEXreAc,13077
97
- pycontrails/models/ps_model/ps_operational_limits.py,sha256=_vFJiPqGuZJRzwuY10-z07-7eEyomnpxPm_Js1Cd5So,16832
98
- pycontrails/models/ps_model/ps_grid.py,sha256=AqZCEytWhrNbyujlJTufI4cxDonkPchGnrB3IvtRID4,18667
94
+ pycontrails/models/ps_model/__init__.py,sha256=268JQILrevjrPNl-WZpo4iWxKv5YVUOmGystDzke48E,553
95
+ pycontrails/models/ps_model/ps_model.py,sha256=PTsMPbnTa1fJMZVk4zlShe-p-FbJAdA6aO45-Cw_Gpk,33177
96
+ pycontrails/models/ps_model/ps_aircraft_params.py,sha256=MkeCfSBOeBZ4nrTcutnrnk-qX3In7zhomw15ujaGAbc,13186
97
+ pycontrails/models/ps_model/ps_operational_limits.py,sha256=kDZrKVrE7FU978SH3Zt3zVsodkFiQX6jMtehkwSMc3M,16639
98
+ pycontrails/models/ps_model/ps_grid.py,sha256=RXhnYI4FO82AHHJMD94is1rLVm_BYY-iVzgMrm8-_xo,25594
99
99
  pycontrails/models/ps_model/static/ps-synonym-list-20240524.csv,sha256=ksrpQTHkxSt1Va_R0rHdenEz6DlIs-Sfk1KFBzHKjhk,1038
100
100
  pycontrails/models/ps_model/static/ps-aircraft-params-20240524.csv,sha256=3eNhSwzut0gon04k2EYKKaXRvQSUlau3yBAbHS0EBao,25784
101
101
  pycontrails/models/cocipgrid/cocip_grid_params.py,sha256=l4vBPrOKCJDz5Y1uMjmOGVyUcSWgfZtFWbjW968OPz8,5875
102
102
  pycontrails/models/cocipgrid/__init__.py,sha256=ar6bF_8Pusbb-myujz_q5ntFylQTNH8yiM8fxP7Zk30,262
103
- pycontrails/models/cocipgrid/cocip_grid.py,sha256=JV-arscdjzvUWbtaOoDuo_87VlKIwID7Vbw-KwCurzI,94337
104
- pycontrails/physics/geo.py,sha256=9ZWIXyEEgrBNqsoeBBlYLTA-8GUTgyc-jgeVgchxXa8,30288
103
+ pycontrails/models/cocipgrid/cocip_grid.py,sha256=xgPKFk1yEkNp75n8uMbE_f8tGDhq2GlhtJwqLFepJ5A,94062
104
+ pycontrails/physics/geo.py,sha256=ngAWxfvEESTQ7VvQ3eZZlu3MuUQRiB_5rfTSy9Qxi9E,36153
105
105
  pycontrails/physics/units.py,sha256=j-G5AC9eWIvv2MTOq9lUOoOQKFNJJuHzWLanHRji2tE,12272
106
106
  pycontrails/physics/constants.py,sha256=pHQQmccMUwuNnY4hFtm3L8G2rnUQcfJnroyQr8HAVeM,3146
107
107
  pycontrails/physics/__init__.py,sha256=_1eWbEy6evEWdfJCEkwDiSdpiDNzNWEPVqaPekHyhwU,44
108
108
  pycontrails/physics/thermo.py,sha256=sWGpKa12daSpqZYNgyXd8Ii5nfA_1Mm5mMbnM5GsW-E,12787
109
- pycontrails/physics/jet.py,sha256=JX-o5dDjyITMNUIOcD_7UBt_4ldc9v-5gI6bmwf0wQ4,25624
109
+ pycontrails/physics/jet.py,sha256=6A2UmpdBatxWeujItM38lhOT1GOVE9LG6QQMHv06d9k,30221
110
+ pycontrails/physics/static/iata-cargo-load-factors-20241115.csv,sha256=lbTsVjgXqdB9FTuaYQsLnmfPZX0vWS6kuKmiqiQYa0c,3686
111
+ pycontrails/physics/static/iata-passenger-load-factors-20241115.csv,sha256=uKtz6JNvgEhOlSRkWCLBeOTja6C3lI2Gkz2HmB-B0m4,3681
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp310-cp310-macosx_11_0_arm64
5
5