hestia-earth-models 0.67.0__py3-none-any.whl → 0.67.1__py3-none-any.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.
Files changed (29) hide show
  1. hestia_earth/models/cml2001Baseline/resourceUseEnergyDepletionDuringCycle.py +5 -10
  2. hestia_earth/models/cycle/completeness/freshForage.py +7 -3
  3. hestia_earth/models/cycle/inorganicFertiliser.py +67 -17
  4. hestia_earth/models/environmentalFootprintV3_1/environmentalFootprintSingleOverallScore.py +42 -37
  5. hestia_earth/models/environmentalFootprintV3_1/soilQualityIndexLandTransformation.py +22 -14
  6. hestia_earth/models/environmentalFootprintV3_1/soilQualityIndexTotalLandUseEffects.py +17 -15
  7. hestia_earth/models/hestia/landTransformation100YearAverageDuringCycle.py +1 -1
  8. hestia_earth/models/hestia/landTransformation20YearAverageDuringCycle.py +1 -1
  9. hestia_earth/models/ipcc2019/aboveGroundBiomass.py +1 -1
  10. hestia_earth/models/ipcc2019/belowGroundBiomass.py +1 -1
  11. hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1_utils.py +4 -4
  12. hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_2_utils.py +1 -1
  13. hestia_earth/models/mocking/search-results.json +1173 -1041
  14. hestia_earth/models/utils/blank_node.py +64 -11
  15. hestia_earth/models/utils/ecoClimateZone.py +2 -2
  16. hestia_earth/models/utils/impact_assessment.py +5 -4
  17. hestia_earth/models/utils/lookup.py +3 -5
  18. hestia_earth/models/version.py +1 -1
  19. {hestia_earth_models-0.67.0.dist-info → hestia_earth_models-0.67.1.dist-info}/METADATA +1 -1
  20. {hestia_earth_models-0.67.0.dist-info → hestia_earth_models-0.67.1.dist-info}/RECORD +29 -29
  21. tests/models/cml2001Baseline/test_resourceUseEnergyDepletionDuringCycle.py +68 -35
  22. tests/models/environmentalFootprintV3_1/test_environmentalFootprintSingleOverallScore.py +38 -8
  23. tests/models/environmentalFootprintV3_1/test_soilQualityIndexLandTransformation.py +65 -36
  24. tests/models/site/test_management.py +1 -4
  25. tests/models/utils/test_blank_node.py +13 -165
  26. tests/orchestrator/models/test_transformations.py +4 -1
  27. {hestia_earth_models-0.67.0.dist-info → hestia_earth_models-0.67.1.dist-info}/LICENSE +0 -0
  28. {hestia_earth_models-0.67.0.dist-info → hestia_earth_models-0.67.1.dist-info}/WHEEL +0 -0
  29. {hestia_earth_models-0.67.0.dist-info → hestia_earth_models-0.67.1.dist-info}/top_level.txt +0 -0
@@ -12,7 +12,6 @@ from typing import (
12
12
  Optional,
13
13
  Union
14
14
  )
15
-
16
15
  from dateutil import parser
17
16
  from dateutil.relativedelta import relativedelta
18
17
  from hestia_earth.schema import TermTermType
@@ -22,6 +21,7 @@ from hestia_earth.utils.model import filter_list_term_type
22
21
  from hestia_earth.utils.tools import (
23
22
  flatten,
24
23
  list_sum,
24
+ list_average,
25
25
  safe_parse_date,
26
26
  safe_parse_float,
27
27
  non_empty_list
@@ -44,6 +44,14 @@ MAX_DEPTH = 1000
44
44
  OLDEST_DATE = '1800'
45
45
 
46
46
 
47
+ def group_by_term(values: list):
48
+ def group_by(groups: dict, value: dict):
49
+ key = value.get('term', {}).get('@id')
50
+ groups[key] = groups.get(key, []) + [value]
51
+ return groups
52
+ return reduce(group_by, values, {})
53
+
54
+
47
55
  def merge_blank_nodes(source: list, new_values: list):
48
56
  """
49
57
  Merge a list of blank nodes into an existing list of blank nodes.
@@ -1335,11 +1343,14 @@ def _node_from_group(nodes: list):
1335
1343
  # `nodes` contain list with consecutive dates
1336
1344
  return nodes[0] if len(nodes) == 1 else (
1337
1345
  # if all nodes have the same dates, sum up the values
1338
- nodes[0] | {'value': _sum_nodes_value(nodes)} if _same_dates(nodes)
1339
- else nodes[0] | {
1340
- 'startDate': min(n.get('startDate') for n in nodes),
1341
- 'endDate': max(n.get('endDate') for n in nodes)
1342
- }
1346
+ nodes[0] | (
1347
+ {
1348
+ 'value': _sum_nodes_value(nodes)
1349
+ } if _same_dates(nodes) else {
1350
+ 'startDate': min(n.get('startDate') for n in nodes),
1351
+ 'endDate': max(n.get('endDate') for n in nodes)
1352
+ }
1353
+ )
1343
1354
  )
1344
1355
 
1345
1356
 
@@ -1349,7 +1360,7 @@ def _condense_nodes(nodes: list):
1349
1360
  return flatten(map(_node_from_group, grouped_nodes))
1350
1361
 
1351
1362
 
1352
- def _group_nodes_to_condense(nodes: list) -> dict:
1363
+ def _group_nodes_by_value_and_properties(nodes: list) -> dict:
1353
1364
  def _group_node(group: dict, node: dict):
1354
1365
  value = node.get('value', [])
1355
1366
  value = '-'.join(map(str, value if isinstance(value, list) else [value]))
@@ -1359,7 +1370,6 @@ def _group_nodes_to_condense(nodes: list) -> dict:
1359
1370
  f"{p.get('value')}"
1360
1371
  ])) for p in node.get('properties', [])
1361
1372
  ]))
1362
- # group by term, value, and properties
1363
1373
  group_key = '-'.join(non_empty_list([
1364
1374
  node.get('term', {}).get('@id', ''),
1365
1375
  value,
@@ -1371,8 +1381,51 @@ def _group_nodes_to_condense(nodes: list) -> dict:
1371
1381
  return reduce(_group_node, nodes, {})
1372
1382
 
1373
1383
 
1384
+ def _group_nodes_by_dates(nodes: list) -> dict:
1385
+ def _group_node(group: dict, node: dict):
1386
+ group_key = '-'.join(non_empty_list([
1387
+ node.get('term', {}).get('@id', ''),
1388
+ node.get('startDate'),
1389
+ node.get('endDate'),
1390
+ ]))
1391
+ group[group_key] = group.get(group_key, []) + [node]
1392
+ return group
1393
+
1394
+ return reduce(_group_node, nodes, {})
1395
+
1396
+
1397
+ def _average_properties(properties: list):
1398
+ # group properties by term
1399
+ grouped_properties = group_by_term(properties)
1400
+ return [
1401
+ props[0] | {
1402
+ 'value': list_average(non_empty_list([p.get('value') for p in props]), default=props[0].get('value'))
1403
+ }
1404
+ for props in grouped_properties.values()
1405
+ ]
1406
+
1407
+
1408
+ def _merge_same_dates(nodes: list):
1409
+ # group by term, startDate and endDate
1410
+ grouped_nodes = _group_nodes_by_dates(nodes)
1411
+
1412
+ def merge_nodes(nodes: list):
1413
+ properties = flatten([n.get('properties', []) for n in nodes])
1414
+ return nodes[0] | (
1415
+ {
1416
+ 'value': _sum_nodes_value(nodes)
1417
+ } | ({
1418
+ 'properties': _average_properties(properties)
1419
+ } if properties else {})
1420
+ ) if len(nodes) > 1 else nodes[0]
1421
+
1422
+ return list(map(merge_nodes, grouped_nodes.values()))
1423
+
1424
+
1374
1425
  def condense_nodes(nodes: list) -> list:
1375
- grouped_nodes = _group_nodes_to_condense(nodes)
1426
+ # merge nodes with the same term and dates as they need to be unique
1427
+ values = _merge_same_dates(nodes)
1428
+ grouped_nodes = _group_nodes_by_value_and_properties(values)
1376
1429
  return flatten(map(_condense_nodes, grouped_nodes.values()))
1377
1430
 
1378
1431
 
@@ -1446,13 +1499,13 @@ def most_relevant_blank_node_by_id(nodes: list, term_id: str, date: str):
1446
1499
  PROPERTY_UNITS_CONVERSIONS = {
1447
1500
  Units.KG.value: {
1448
1501
  Units.MJ.value: [
1449
- 'energyContentHigherHeatingValue', # "kg" to "mj"
1502
+ 'energyContentLowerHeatingValue', # "kg" to "mj"
1450
1503
  ]
1451
1504
  },
1452
1505
  Units.M3.value: {
1453
1506
  Units.MJ.value: [
1454
1507
  'density', # "m3" to "kg"
1455
- 'energyContentHigherHeatingValue', # "kg" to "mj"
1508
+ 'energyContentLowerHeatingValue', # "kg" to "mj"
1456
1509
  ]
1457
1510
  }
1458
1511
  }
@@ -36,8 +36,8 @@ def get_eco_climate_zone_value(node: dict, as_enum: bool = False) -> Union[int,
36
36
  Parameters
37
37
  ----------
38
38
  node : dict
39
- A HESTIA [Site](https://www-staging.hestia.earth/schema/Site) or
40
- [Cycle](https://www-staging.hestia.earth/schema/Cycle).
39
+ A HESTIA [Site](https://hestia.earth/schema/Site) or
40
+ [Cycle](https://hestia.earth/schema/Cycle).
41
41
 
42
42
  Returns
43
43
  -------
@@ -131,6 +131,7 @@ def impact_country_value(
131
131
  lookup: str,
132
132
  group_key: str = None,
133
133
  country_fallback: bool = False,
134
+ default_no_values=None
134
135
  ) -> float:
135
136
  """
136
137
  Calculate the value of the impact based on lookup factors and `site.country.@id`.
@@ -166,13 +167,13 @@ def impact_country_value(
166
167
  debugValues(impact, model=model, term=term_id,
167
168
  values_used=log_as_table(values))
168
169
 
169
- all_with_factors = all([v.get('coefficient') is not None for v in values if v.get('value') is not None])
170
+ has_values = len(values) > 0
171
+ missing_values = set([v.get('id') for v in values if v.get('value') and v.get('coefficient') is None])
172
+ all_with_factors = not missing_values
170
173
  values = [float((v.get('value') or 0) * (v.get('coefficient') or 0)) for v in values]
171
174
 
172
175
  # fail if some factors are missing
173
- return None if not all_with_factors else (
174
- list_sum(values) if len(values) > 0 else None
175
- )
176
+ return None if not all_with_factors else (list_sum(values) if has_values else default_no_values)
176
177
 
177
178
 
178
179
  def impact_aware_value(model: str, term_id: str, impact: dict, lookup: str, group_key: str = None) -> float:
@@ -50,8 +50,8 @@ def all_factor_value(
50
50
  values = list(map(_factor_value(model, term_id, lookup_name, lookup_col, grouped_key), blank_nodes))
51
51
 
52
52
  has_values = len(values) > 0
53
- missing_values = set([v.get('id') for v in values if v.get('value') is not None and v.get('coefficient') is None])
54
- all_with_factors = all([v.get('coefficient') is not None for v in values if v.get('value') is not None])
53
+ missing_values = set([v.get('id') for v in values if v.get('value') and v.get('coefficient') is None])
54
+ all_with_factors = not missing_values
55
55
 
56
56
  for missing_value in missing_values:
57
57
  debugMissingLookup(lookup_name, 'termid', missing_value, lookup_col, None, model=model, term=term_id)
@@ -65,9 +65,7 @@ def all_factor_value(
65
65
  values = [float((v.get('value') or 0) * (v.get('coefficient') or 0)) for v in values]
66
66
 
67
67
  # fail if some factors are missing
68
- return None if not all_with_factors else (
69
- list_sum(values) if has_values else default_no_values
70
- )
68
+ return None if not all_with_factors else (list_sum(values) if has_values else default_no_values)
71
69
 
72
70
 
73
71
  def _term_factor_value(model: str, term_id: str, lookup_name: str, lookup_term_id: str, group_key: str = None):
@@ -1 +1 @@
1
- VERSION = '0.67.0'
1
+ VERSION = '0.67.1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hestia-earth-models
3
- Version: 0.67.0
3
+ Version: 0.67.1
4
4
  Summary: HESTIA's set of modules for filling gaps in the activity data using external datasets (e.g. populating soil properties with a geospatial dataset using provided coordinates) and internal lookups (e.g. populating machinery use from fuel use). Includes rules for when gaps should be filled versus not (e.g. never gap fill yield, gap fill crop residue if yield provided etc.).
5
5
  Home-page: https://gitlab.com/hestia-earth/hestia-engine-models
6
6
  Author: HESTIA Team
@@ -4,7 +4,7 @@ hestia_earth/models/cache_sites.py,sha256=tApCGZ55bRG3rl7a-jjwZokgF3dxGbg8WlKfwo
4
4
  hestia_earth/models/log.py,sha256=3NzkAEgxMGCMolQbC6nDuAJEb7ZpQNXLekhbRNjedSo,3561
5
5
  hestia_earth/models/preload_requests.py,sha256=vK_G1UzhNMhYy7ymnCtHUz_vv3cfApCSKqv29VREEBQ,1943
6
6
  hestia_earth/models/requirements.py,sha256=eU4yT443fx7BnaokhrLB_PCizJI7Y6m4auyo8vQauNg,17363
7
- hestia_earth/models/version.py,sha256=AtpxzttjHgdl8EuXNyJH8_i6hGILXOxlpbooRi2a3sE,19
7
+ hestia_earth/models/version.py,sha256=rFzSUNBZgH06WHZggrqjYhfDC7R4tScObDyCGmEYcOs,19
8
8
  hestia_earth/models/agribalyse2016/__init__.py,sha256=WvK0qCQbnYtg9oZxrACd1wGormZyXibPtpCnIQeDqbw,415
9
9
  hestia_earth/models/agribalyse2016/fuelElectricity.py,sha256=rm5ZaRAzJ08m2y4BxkGh-RjudkDWgozmg3XumoRm-fQ,4511
10
10
  hestia_earth/models/agribalyse2016/machineryInfrastructureDepreciatedAmountPerCycle.py,sha256=BPjnWmg73i_OxM2ouCdMTWZtPIqyoUAXrvutntyteE0,3390
@@ -30,7 +30,7 @@ hestia_earth/models/cml2001Baseline/__init__.py,sha256=0uGrCKDNUH-MUkpvts9MyPMnZ
30
30
  hestia_earth/models/cml2001Baseline/abioticResourceDepletionFossilFuels.py,sha256=6CvHcrSANH4UAWY58y2Ow00DzqitJVAteCzjsmi5cwA,6070
31
31
  hestia_earth/models/cml2001Baseline/abioticResourceDepletionMineralsAndMetals.py,sha256=yXie6UW0_I4VQcADn7Uvk4n1RmrFAauJ7ZVh7OgBUyA,5952
32
32
  hestia_earth/models/cml2001Baseline/eutrophicationPotentialExcludingFate.py,sha256=nUWKsn3COqAOrYNmiBKnA2rUs88pj4o3k4fHKA0TVbU,1068
33
- hestia_earth/models/cml2001Baseline/resourceUseEnergyDepletionDuringCycle.py,sha256=3MGkwcuyQ8LcIrqb0gCs0PYr0Im0L_r4SWrdoRXr05k,5686
33
+ hestia_earth/models/cml2001Baseline/resourceUseEnergyDepletionDuringCycle.py,sha256=UUzdnKE4J9KHvFdJVRgVfVkTuMfSxK_nW-aMkTuNoCk,5546
34
34
  hestia_earth/models/cml2001Baseline/resourceUseEnergyDepletionInputsProduction.py,sha256=hXGdx1IA5yeVLHrRrSZWCP0s7ucSRWelYNr6aQ9YTyU,1205
35
35
  hestia_earth/models/cml2001Baseline/resourceUseMineralsAndMetalsDuringCycle.py,sha256=WUIA2tDBoAdTQ6Aa5GgEpvOGyR-O6KuJeeIffUpTh2U,2708
36
36
  hestia_earth/models/cml2001Baseline/resourceUseMineralsAndMetalsInputsProduction.py,sha256=WfFL9n_KyR2XXPwliHu6gpgixFrOWB4XAO1VsJWgIio,1200
@@ -57,7 +57,7 @@ hestia_earth/models/cycle/energyContentLowerHeatingValue.py,sha256=AyVKCQbb3Pto3
57
57
  hestia_earth/models/cycle/excretaKgMass.py,sha256=iA8Kfl3WvyxbQpx1QOGPQZ9O_Pc5rj7xhucYx3rB8Co,3949
58
58
  hestia_earth/models/cycle/excretaKgN.py,sha256=mgJTneQIYJ9Su-rTK5ppb_k3YhICFNWsfPZtGR98RI0,2968
59
59
  hestia_earth/models/cycle/excretaKgVs.py,sha256=ed-DcQoQXZgWF8UZDs2N-G6EBIOPmpXu3BD6jdmh0V0,2973
60
- hestia_earth/models/cycle/inorganicFertiliser.py,sha256=Yt5NcP9FQEzWwlritrPGbhh2W9wR378OM3lDPBzDiL4,6967
60
+ hestia_earth/models/cycle/inorganicFertiliser.py,sha256=pH4jHB6wEQnr5YQ9AhVsuROfEFb07SNcBMPlHvf1Fjo,9127
61
61
  hestia_earth/models/cycle/irrigatedTypeUnspecified.py,sha256=KlIa5eDvT47Twz6Q1kpw0rMlRjCK25CExaW58DEvc9w,2125
62
62
  hestia_earth/models/cycle/liveAnimal.py,sha256=5dlvuVAu24hLLOVXsozcVzWyDVzddzoungUBwrBDS-g,3986
63
63
  hestia_earth/models/cycle/longFallowRatio.py,sha256=_h0kub99sACO87IfjMeiu8IgdK2jaeBlgGA9A9-ViZA,1683
@@ -92,7 +92,7 @@ hestia_earth/models/cycle/completeness/animalFeed.py,sha256=8Fo1TqwSuiPudvd2vJ-L
92
92
  hestia_earth/models/cycle/completeness/cropResidue.py,sha256=Jpmm5SAiyUkaFp8EsBIQ55jiCyn3C20a3au_zaPRnEk,2837
93
93
  hestia_earth/models/cycle/completeness/electricityFuel.py,sha256=uEXMyfMCvvZKD3jcQGAIZOv1cZLrhpXZiyCn_56kxig,2125
94
94
  hestia_earth/models/cycle/completeness/excreta.py,sha256=2yVxcuWjAh4hoEukaMJ90VZpkCL7SfpwIgzigbjVaF4,996
95
- hestia_earth/models/cycle/completeness/freshForage.py,sha256=bfPoOvhQU6nztSTGYlonv5ungk5TmtV0x89gk3aT_Dw,2256
95
+ hestia_earth/models/cycle/completeness/freshForage.py,sha256=qxo2MoVCgrMtcj-h_uHfbVZpOn-THx8DkyyRXCXixLk,2412
96
96
  hestia_earth/models/cycle/completeness/material.py,sha256=UQH2oRnUY-Q-_MVuOlTAYqQxc7wWDM5mi_iFmp9PlIQ,1362
97
97
  hestia_earth/models/cycle/completeness/seed.py,sha256=rLNar7q39YqdtyFLBiyXeRbsVSWFRd8H7Bhjx7ATISU,1932
98
98
  hestia_earth/models/cycle/completeness/soilAmendment.py,sha256=AXGtO1d8oLWgvmVLoNBqknsH2lmr5y15E2xkgZpkCSU,1392
@@ -150,13 +150,13 @@ hestia_earth/models/emepEea2019/tspToAirAnimalHousing.py,sha256=hHHhu_EZWhxAKhGJ
150
150
  hestia_earth/models/emepEea2019/utils.py,sha256=oTHjbRRwJZv_tpO9MOlfpyQRmN0a1kvEZsVHUPliZpQ,4014
151
151
  hestia_earth/models/emissionNotRelevant/__init__.py,sha256=NkP635TDNs7bQBv2n9tUTLwScZHfUkSC4XzLVwjxWtg,2240
152
152
  hestia_earth/models/environmentalFootprintV3_1/__init__.py,sha256=tF2WrWiV1Wzi2vnRiNXdfPWfmVxgVu9w9-7eA6PA7-s,473
153
- hestia_earth/models/environmentalFootprintV3_1/environmentalFootprintSingleOverallScore.py,sha256=Jlenb5nh0DKCoh8Pdd6-3Bxvyg9fB3bw1ww3_y7nE9w,5796
153
+ hestia_earth/models/environmentalFootprintV3_1/environmentalFootprintSingleOverallScore.py,sha256=pNiL6WNAuRqTQ9lwEasxAAiAm7vhZUs5bxLIQTCSb70,5733
154
154
  hestia_earth/models/environmentalFootprintV3_1/freshwaterEcotoxicityPotentialCtue.py,sha256=N_gw2aNoCMW5Z1XM-uAyCF1kfpZUI07giv_bo3Lmr5Q,918
155
155
  hestia_earth/models/environmentalFootprintV3_1/marineEutrophicationPotential.py,sha256=UM9pezQeETfk9i0FtOBRdreaaJ9OqL6G4gYljrKOz-0,1063
156
156
  hestia_earth/models/environmentalFootprintV3_1/scarcityWeightedWaterUse.py,sha256=2m_vX-Ziy8rrVqf1fBpKzLc1FFXs48XQRygvCKS7i-0,1263
157
157
  hestia_earth/models/environmentalFootprintV3_1/soilQualityIndexLandOccupation.py,sha256=r3GV2pspKWAlKU46TMh_6D_rrXtY_onhk3RnukzJjD8,5095
158
- hestia_earth/models/environmentalFootprintV3_1/soilQualityIndexLandTransformation.py,sha256=D_le-V9J0JFcCT5YBXYWv_Z1IQ67EjvwDiaoDuVeJ6w,7072
159
- hestia_earth/models/environmentalFootprintV3_1/soilQualityIndexTotalLandUseEffects.py,sha256=SIjFYPv4n3mziohW2nlycaMssHQ3ws79hqHa4i3sCVI,2997
158
+ hestia_earth/models/environmentalFootprintV3_1/soilQualityIndexLandTransformation.py,sha256=KJfcFqVYDLLkymWUAf7NI_7JSwcEPgjw9PKVwyhXShQ,7318
159
+ hestia_earth/models/environmentalFootprintV3_1/soilQualityIndexTotalLandUseEffects.py,sha256=OS746_21QBMN7D-B04HU-rWwXFuaVD6qy-TTd_Ea5zU,3318
160
160
  hestia_earth/models/environmentalFootprintV3_1/utils.py,sha256=fZ99_G0Kh4OUW5wH-LglzCrKp8l2plKuCs4yvUH_3hs,699
161
161
  hestia_earth/models/epa2014/__init__.py,sha256=ckGf_6X7CCzI_18OqchEkuJAXKXM1x7V53u480ckknM,408
162
162
  hestia_earth/models/epa2014/no3ToGroundwaterExcreta.py,sha256=fN4fOOcjBg3tl0lzNeJ8mzg6mrvQRxilx-R5Gc4l4Nw,1724
@@ -214,8 +214,8 @@ hestia_earth/models/haversineFormula/transport/__init__.py,sha256=47DEQpj8HBSa-_
214
214
  hestia_earth/models/haversineFormula/transport/distance.py,sha256=163KrmKzlEQuKYT1ZvpPgmKlv_-mmvxp0A1_uKya99w,4203
215
215
  hestia_earth/models/hestia/__init__.py,sha256=o5vAmPzSaK9XPgL8GCne3-lugfCOgZhHELYolNgqyyY,407
216
216
  hestia_earth/models/hestia/landCover.py,sha256=L0TsEzDAF4tczU_TSa-UrtUbJiBjuUYxDY64-oOeT-o,30224
217
- hestia_earth/models/hestia/landTransformation100YearAverageDuringCycle.py,sha256=-7ToRvCVPD6AAcjxorPS5jSWio7JAglHrdSS9PPyPqQ,1551
218
- hestia_earth/models/hestia/landTransformation20YearAverageDuringCycle.py,sha256=TCskVLhYXBMxdeZM-gN4Tdixk5ua7eVn-o5dfIT_H7o,1543
217
+ hestia_earth/models/hestia/landTransformation100YearAverageDuringCycle.py,sha256=JdiCiy8nEH7i59vcDOi2F4-3jANqtlfHanMhR4rBFNQ,1539
218
+ hestia_earth/models/hestia/landTransformation20YearAverageDuringCycle.py,sha256=WxSZZ3wDJefZ3MFOulXtbcLW-YtGehpjdhvAzNL6gJ8,1531
219
219
  hestia_earth/models/hestia/residueRemoved.py,sha256=VdB00ZdwQMIj7qsZ7549DQmbqWtCQtFZpsUlc_11yt8,2857
220
220
  hestia_earth/models/hestia/resourceUse_utils.py,sha256=7DJE4yGUl0BCiNdtr8u_41Uz8m9yY7tdlC9ggkGwh7c,8639
221
221
  hestia_earth/models/hestia/seed_emissions.py,sha256=58hmHAgemOuGVIsij-FWF7EsGmEbCSfzFAEfXkXSyEE,11566
@@ -254,9 +254,9 @@ hestia_earth/models/ipcc2013ExcludingFeedbacks/gwp100.py,sha256=2fFEHTXxel_XPiMX
254
254
  hestia_earth/models/ipcc2013IncludingFeedbacks/__init__.py,sha256=VJ16KIGQQHybzZiTvu3mpZy_3j0xcd06RHHCfPrCMgU,427
255
255
  hestia_earth/models/ipcc2013IncludingFeedbacks/gwp100.py,sha256=HR2vnOc64mg_fxe9m5NmqxBZ8-aFuKb44gmItyuRL1s,1041
256
256
  hestia_earth/models/ipcc2019/__init__.py,sha256=LdRpu8KbEc-MroIwXfKDjfj-xbgmfUYgctjKVvtpRfQ,409
257
- hestia_earth/models/ipcc2019/aboveGroundBiomass.py,sha256=3OizoSpsHtHG2evmH9A-kxVl3FqqrIfZeFcVCv9BOi8,19956
257
+ hestia_earth/models/ipcc2019/aboveGroundBiomass.py,sha256=hfiDkbsiSkx-CrravYwF8C0McK4w9-PZL5sQWIdHrLM,19944
258
258
  hestia_earth/models/ipcc2019/aboveGroundCropResidueTotal.py,sha256=lT2QVV5c2LvQqZRfPEvFT_bMTayMXgIsFLnx8I6iYzw,3089
259
- hestia_earth/models/ipcc2019/belowGroundBiomass.py,sha256=VpYI_BT4D4R5dASC13kn9_QPxVMiojY_gc32StUPvwM,18961
259
+ hestia_earth/models/ipcc2019/belowGroundBiomass.py,sha256=QclpcQh58qlUIFn1wXH3pktfQ-x5lw0YpEFUdMSr68I,18949
260
260
  hestia_earth/models/ipcc2019/belowGroundCropResidue.py,sha256=7AFU2Q0qPAvv6uEKWByS38jl77FvjTPbGm2GQ53waGg,3499
261
261
  hestia_earth/models/ipcc2019/biomass_utils.py,sha256=R7t-YWq5K-AMHihlWh8hWHfhaoGZMmDf8SNFM6-wGdU,15895
262
262
  hestia_earth/models/ipcc2019/carbonContent.py,sha256=tlQvu4Auhpjmaz7XrZz86xwxVrJhsYYf8DFA_aQeev4,7255
@@ -290,8 +290,8 @@ hestia_earth/models/ipcc2019/no3ToGroundwaterOrganicFertiliser.py,sha256=px2SN-u
290
290
  hestia_earth/models/ipcc2019/noxToAirInorganicFertiliser.py,sha256=fmmFgjtvOD2TrrLY03jYly_KvDnCsAXqhL_tmZQQt-A,4480
291
291
  hestia_earth/models/ipcc2019/noxToAirOrganicFertiliser.py,sha256=9dx_MRTwJGxJRq6mj2EJQMdQ2w6j7lw0fQk0If_cIGc,4152
292
292
  hestia_earth/models/ipcc2019/organicCarbonPerHa.py,sha256=C9ef41fd-gYixEV3sTs9VMHHdnSZJ14kbEEmMG116hY,8653
293
- hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1_utils.py,sha256=NNiFGHRErIgyYw7l9uoMaUNpAd0OhkUOKEqwQ1863xM,76251
294
- hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_2_utils.py,sha256=4VSVL0qHVzwvi7lVAY5VMkGscUsu3PIyvJENFyTKYgM,64040
293
+ hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1_utils.py,sha256=XynerdHDnIx1BOeu_dc-R3F4fOACxdBAUm0don3OINY,76203
294
+ hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_2_utils.py,sha256=HgvM6PpfSvSBae4idOHkunD7zffT3z6hTX6YVIocGSs,64028
295
295
  hestia_earth/models/ipcc2019/organicCarbonPerHa_utils.py,sha256=FFcjdkYq5NJwAu4bWZJUao4MoDHvgbXmXCnUNKD-a3w,9842
296
296
  hestia_earth/models/ipcc2019/pastureGrass.py,sha256=HWRkpYpGqvMfol2dPb9pFkNzoGj7n6sRpyIjGSVM9lQ,10306
297
297
  hestia_earth/models/ipcc2019/pastureGrass_utils.py,sha256=KvjIQ3xwbq1rk3thHlkGgQaWKgh0hCkNnzC53JW9634,14178
@@ -414,7 +414,7 @@ hestia_earth/models/linkedImpactAssessment/utils.py,sha256=S1zlux02gU2Lajrtoq-zQ
414
414
  hestia_earth/models/mocking/__init__.py,sha256=9VX50c-grz-snfd-7MBS0KfF7AadtbKuj7kK6PqtsgE,687
415
415
  hestia_earth/models/mocking/build_mock_search.py,sha256=p15ccEUmkmLp1RiGNznxMz3OFHbI8P1-29ExuohiQN8,1355
416
416
  hestia_earth/models/mocking/mock_search.py,sha256=ccFe_WrI73JElFmxp4hPNLCX7eeU--lBC1JFR901KJY,1069
417
- hestia_earth/models/mocking/search-results.json,sha256=4Lktf7Rv2YObXMbIxFDPQ1jynfsn14WXh9EptNX5P9U,102054
417
+ hestia_earth/models/mocking/search-results.json,sha256=ZEwud-KZeXQ0-UYWoP9METNQ_llbCJhbmUXTqITgk6k,105086
418
418
  hestia_earth/models/pooreNemecek2018/__init__.py,sha256=nPboL7ULJzL5nJD5q7q9VOZt_fxbKVm8fmn1Az5YkVY,417
419
419
  hestia_earth/models/pooreNemecek2018/aboveGroundCropResidueTotal.py,sha256=Qt-mel4dkhK6N5uUOutNOinCTFjbjtGzITaaI0LvYc4,2396
420
420
  hestia_earth/models/pooreNemecek2018/belowGroundCropResidue.py,sha256=JT0RybbvWVlo01FO8K0Yj41HrEaJT3Kj1xfayr2X-xw,2315
@@ -581,7 +581,7 @@ hestia_earth/models/utils/aggregated.py,sha256=cTUzS60t44_viF1wMnTTVpFq8-6cKJTQu
581
581
  hestia_earth/models/utils/animalProduct.py,sha256=M5IunAKGY6oZv3j1Ascl34ywyeLWApqOIlBzbtlA2FE,721
582
582
  hestia_earth/models/utils/aquacultureManagement.py,sha256=dxrbC1Xf140cohxTbSw6TxLAnAASWTdNZwBBam4yQnw,171
583
583
  hestia_earth/models/utils/array_builders.py,sha256=ko1pDZKaUudZqxOZ99vJamKAdoR6ND4ZmxVrYH6YjPc,19498
584
- hestia_earth/models/utils/blank_node.py,sha256=p0ikM08UygbF-zXfJsf_OtePCxkCMjkBqTpmFhshHSQ,52261
584
+ hestia_earth/models/utils/blank_node.py,sha256=dvVv9JXrexEAzACs-CIObZlFZ4NrwxIND5MhQgbIlIc,53935
585
585
  hestia_earth/models/utils/cache_sources.py,sha256=MBkrPpjwNiC4ApDjeYVHZjWBbpvAerXRDrMHpjasAZ0,377
586
586
  hestia_earth/models/utils/completeness.py,sha256=2-GusD9UycobDZq8y5jar0ZcOjyqnSbzPRT_5XMc4YA,1259
587
587
  hestia_earth/models/utils/constant.py,sha256=6wLx8xb2R8HtpEpVy5e-PbioOo7QCu2n-W72fs6OvgE,3411
@@ -591,19 +591,19 @@ hestia_earth/models/utils/cropResidueManagement.py,sha256=nIDFjf39rDD10UHSVudfDy
591
591
  hestia_earth/models/utils/currency.py,sha256=f_ArJANb--pZq4LL49SXQ1AMX_oKroqwBXKRRQqZwsM,578
592
592
  hestia_earth/models/utils/cycle.py,sha256=PmloVCSU4TtXnEe0ltP--bTIZBXVB-rEFJrV6IYsdeo,16209
593
593
  hestia_earth/models/utils/descriptive_stats.py,sha256=EMVwFvg2OnZgKRAfireAoWY2EbrSvqR0V0bK9B53p28,1583
594
- hestia_earth/models/utils/ecoClimateZone.py,sha256=kD5DGActHAfMCJykKQGkwEEicWt7PQlEIX9_PkqXfP0,4265
594
+ hestia_earth/models/utils/ecoClimateZone.py,sha256=etsWsAQeYHCnDJJi-ezTrzjoaFILC1e3SMfSNsdRnPs,4241
595
595
  hestia_earth/models/utils/emission.py,sha256=H_apu-Og9SJTLVU2lU56IsvSU22-9J7OrqXk1b2qnSE,3638
596
596
  hestia_earth/models/utils/excretaManagement.py,sha256=NuWPQjFZxMVt9sYgBjcqhGWCFk_OKb3sA9Ovcff3fRQ,428
597
597
  hestia_earth/models/utils/feedipedia.py,sha256=wzzrMbYlda1XCpWiObLz4bFLXbAZejHcxsXJFr4U_AM,3953
598
598
  hestia_earth/models/utils/fertiliser.py,sha256=DBO4OBNgnQJ0fCQMDkIk_ZGZX-uKGaTFZCEXfAnJciY,690
599
599
  hestia_earth/models/utils/fuel.py,sha256=XzOELV3dn506PkMKjFQ_ZKVZInd2lL2x6PKdsa6Po4M,1429
600
- hestia_earth/models/utils/impact_assessment.py,sha256=VoJVgSVJkXFvlIukCBm054KGMCBeot17k3DRwo_3_QI,8137
600
+ hestia_earth/models/utils/impact_assessment.py,sha256=fA2hK7xpHKYBZTiz3xvMgO8yTrUtDptoKQRAXdPsahU,8231
601
601
  hestia_earth/models/utils/indicator.py,sha256=UuuraMUdKLqjcm_zEoF8BaMb76qW23djIA_2DeaoiEw,700
602
602
  hestia_earth/models/utils/inorganicFertiliser.py,sha256=_dLBY-otGkLr8PobR5dQ89bF2uwc2PB4JPrHFSksMEQ,1900
603
603
  hestia_earth/models/utils/input.py,sha256=gsVFKTC9WF8dO6YAg_-H_GAOQTnvAr49Ox5-eTH8zf8,5145
604
604
  hestia_earth/models/utils/landCover.py,sha256=8-nfynzCx9gf9YfhpuoH6Cn4kQwWFpYA5RmoGW-0ETE,300
605
605
  hestia_earth/models/utils/liveAnimal.py,sha256=GnajBPZw5d94raf80KtLloaOqlfqGAPwUtP9bRlGWeE,1754
606
- hestia_earth/models/utils/lookup.py,sha256=IkVB-T2Ab_jA7RTZUKn6yp3VBIvmqes26JbAG-Obnd8,8793
606
+ hestia_earth/models/utils/lookup.py,sha256=HR0uvZ1--KviBaUbYYyzlZDs7YioTI1NtyoQqFweMbc,8700
607
607
  hestia_earth/models/utils/management.py,sha256=W5M9k0arraVUGh4ZccVqgb8rSSLxHM6rkmi4MSzV6Dw,413
608
608
  hestia_earth/models/utils/measurement.py,sha256=izEiPszUcPA22zaIc0OuF7Yk82JWu5cxi0Sbz_9YgBo,11142
609
609
  hestia_earth/models/utils/organicFertiliser.py,sha256=2HY-a0EBzUw4DkEAXClLMXVCEZTKYf0BwFHBo7lQ5Tg,363
@@ -668,7 +668,7 @@ tests/models/cml2001Baseline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
668
668
  tests/models/cml2001Baseline/test_abioticResourceDepletionFossilFuels.py,sha256=XseqzU8JE3MOeIM_3cBIlNhTInucG_VNfgyUIpKAdrU,5663
669
669
  tests/models/cml2001Baseline/test_abioticResourceDepletionMineralsAndMetals.py,sha256=y-E5t5x2VcgPsy3cPFBWyULd6vieaGjDY_J2GVJMtUo,4081
670
670
  tests/models/cml2001Baseline/test_eutrophicationPotentialExcludingFate.py,sha256=ZIIx_EiYbUxUoAS7NuQrxqwTFS3rXQm9_1AsqF_bhB8,894
671
- tests/models/cml2001Baseline/test_resourceUseEnergyDepletionDuringCycle.py,sha256=kgtJd2sI6BwL-pOGnNA6b-huPpJGgcO6cbZdme_lKmQ,4772
671
+ tests/models/cml2001Baseline/test_resourceUseEnergyDepletionDuringCycle.py,sha256=QzQg_AdpZ_5jUprevm8F_FOTHbDnxEkxnjSpKCNxyKY,4719
672
672
  tests/models/cml2001Baseline/test_resourceUseEnergyDepletionInputsProduction.py,sha256=KPEC2CXgO78Kkcbi_Iu0AzKRZMYJSfkeEV-kspSyLYA,910
673
673
  tests/models/cml2001Baseline/test_resourceUseMineralsAndMetalsDuringCycle.py,sha256=kko6cV3YRmcxfYdJ8xQuTeo9Bro9BuBbgGBO2gklxWM,2085
674
674
  tests/models/cml2001Baseline/test_resourceUseMineralsAndMetalsInputsProduction.py,sha256=_UqFak1-DX6b-brX2xt3zpfYUhjFPRoUMhgF9l3cw3I,912
@@ -770,12 +770,12 @@ tests/models/emepEea2019/test_so2ToAirFuelCombustion.py,sha256=zRTyeeQM1fRdRVFWb
770
770
  tests/models/emepEea2019/test_tspToAirAnimalHousing.py,sha256=4MNDsxIeUk5_3IvZwEZslxgoPNyQN9OQFDNY3uGNX6E,714
771
771
  tests/models/emepEea2019/test_utils.py,sha256=G6z8tEfWM0OPnUBaFCQgQyEi5-kRF_DqsqdYaPnzR_I,8761
772
772
  tests/models/environmentalFootprintV3_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
773
- tests/models/environmentalFootprintV3_1/test_environmentalFootprintSingleOverallScore.py,sha256=B0cXRUV66Qs5nq9etFxWRrmNJgm3bDFEDje7u7UFroo,3437
773
+ tests/models/environmentalFootprintV3_1/test_environmentalFootprintSingleOverallScore.py,sha256=F4oz4UadhpBlyh4JvLPOWAxGSIKnJVTTDaSzOT3Ihgk,4909
774
774
  tests/models/environmentalFootprintV3_1/test_freshwaterEcotoxicityPotentialCtue.py,sha256=WE-DcerljCjXMYE4f3Sv5ZCVHP0oTjbWkOGuvaa4p10,926
775
775
  tests/models/environmentalFootprintV3_1/test_marineEutrophicationPotential.py,sha256=kY_pu_7SjSZl_l41mttMn4BpKl13TTV9jQYSHFMNXhI,968
776
776
  tests/models/environmentalFootprintV3_1/test_scarcityWeightedWaterUse.py,sha256=zEdWXjtlZv5Nyv0EZxvLxe4BQ-4_ME38bMfNvFZXjl8,1169
777
777
  tests/models/environmentalFootprintV3_1/test_soilQualityIndexLandOccupation.py,sha256=-E8Q5JxIdfF11oqGwRJqcqGO0Ao_Bva164ELMR7sRsI,6197
778
- tests/models/environmentalFootprintV3_1/test_soilQualityIndexLandTransformation.py,sha256=OqVVxAbfXEdqzgEcPx1wQbTrsjT9ENYG-KW8HP0rTOc,5885
778
+ tests/models/environmentalFootprintV3_1/test_soilQualityIndexLandTransformation.py,sha256=xRTBMfQ1Qxs_NIoEFtshM_uzAAcFb80k1qGuFLJa2Dw,7650
779
779
  tests/models/environmentalFootprintV3_1/test_soilQualityIndexTotalLandUseEffects.py,sha256=oeLb8kQ2yabnlCaBw7MYF_fMfVNea4ogr9lWJ-u3SXM,2389
780
780
  tests/models/epa2014/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
781
781
  tests/models/epa2014/test_no3ToGroundwaterExcreta.py,sha256=ESVz4UURvQfhjGBTxjuAV_bymMBcvGNfLAkYMvNup9U,1217
@@ -1127,7 +1127,7 @@ tests/models/site/test_defaultMethodClassification.py,sha256=MoG9inlu5GrNL2QJpO0
1127
1127
  tests/models/site/test_defaultMethodClassificationDescription.py,sha256=7Dg40MLSZnW1X3ZXg2dXMzc1hUqIUIuiga5KX9cVscU,767
1128
1128
  tests/models/site/test_flowingWater.py,sha256=t_rxvdlmUVDsFBoDF20_zDM-0iiLKkNCV7knO9l1T7o,1370
1129
1129
  tests/models/site/test_freshWater.py,sha256=GOeAxHhPW_2E1wQdQRX4W-r7mnb_LgmiAVLImitoApw,982
1130
- tests/models/site/test_management.py,sha256=Z6wwL-UcOktgE026ePskAo78FTwBU6RqZtCg4VO_PYM,1746
1130
+ tests/models/site/test_management.py,sha256=iMA9SpP7yOhHpsvCyizCsSbvw0ZSayvJ5koEZ-Kjbs0,1736
1131
1131
  tests/models/site/test_netPrimaryProduction.py,sha256=JCxG0MODbKVvl3hOqmKzh4FjHYn3Xs9KsVod6LvKQII,1108
1132
1132
  tests/models/site/test_organicCarbonPerHa.py,sha256=XtGrE7ZqthTF0x8lDxJ1slNd_GvYHEyEydcRgA46jEc,3207
1133
1133
  tests/models/site/test_organicCarbonPerKgSoil.py,sha256=0M-NMg_T3UXzGT_VlKOKhSxg4cZ0_zhd3FRgY5Hpj6o,1087
@@ -1181,7 +1181,7 @@ tests/models/usetoxV2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
1181
1181
  tests/models/usetoxV2/test_freshwaterEcotoxicityPotentialCtue.py,sha256=eq7Gcmfya9g0eOKKkuBhz8vq7xi_CmZ_LTSxueBwZt4,835
1182
1182
  tests/models/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1183
1183
  tests/models/utils/test_array_builders.py,sha256=4giHf3bTNd2ReAgcKinKjLpQOOcmfF0qSInngW7UdYc,8434
1184
- tests/models/utils/test_blank_node.py,sha256=G_hH-Gk3__1ZtHQcsdYMbUMwVNSTmYcVBs5jcReIYGM,39945
1184
+ tests/models/utils/test_blank_node.py,sha256=gWdKjXEDkfHGkYjkZwyCOfkESsE5X23OTqgm0OxkzPA,32974
1185
1185
  tests/models/utils/test_cache_sources.py,sha256=xcGMVbYoV23YC4HLBTL_4qZP1ME2cp3DFebgJMxI2TE,721
1186
1186
  tests/models/utils/test_crop.py,sha256=d508vQdtB_Q_6hEahNueXed5PaEiLeN7ScbwZIKCiDI,862
1187
1187
  tests/models/utils/test_cropResidueManagement.py,sha256=RQt8lexeJzCyxZceIutgDpw7BpcqmjsUB0C0yZC2QpY,930
@@ -1212,7 +1212,7 @@ tests/orchestrator/test_models.py,sha256=v5VnyELmrSEcTOtw4lyk2U0r016z8Xx34EFs0FJ
1212
1212
  tests/orchestrator/test_orchestrator.py,sha256=dlO4CKn04m__SZhDtvy1npvQUavVNhdcRe4Unj7wg6g,742
1213
1213
  tests/orchestrator/test_utils.py,sha256=Sqysl2ocifLUeSbgGUdeRn0Sof0xVEeH4dgoXfe18yw,3050
1214
1214
  tests/orchestrator/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1215
- tests/orchestrator/models/test_transformations.py,sha256=cQdk8rEtSJJr27th8SmacsOpC7BP_YVXDrmFDDY4Iks,1080
1215
+ tests/orchestrator/models/test_transformations.py,sha256=5s6Ts6_DzNvvxpgtqoA2YTnsTJFr_6xbwTNUkQmWr14,1441
1216
1216
  tests/orchestrator/models/emissions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1217
1217
  tests/orchestrator/models/emissions/test_deleted.py,sha256=55WOjXR2oeKxdRgXmJg4DgIY3f0asPMvez8b5fkT7LI,767
1218
1218
  tests/orchestrator/strategies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1225,8 +1225,8 @@ tests/orchestrator/strategies/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
1225
1225
  tests/orchestrator/strategies/run/test_add_blank_node_if_missing.py,sha256=lGqeebvgAwGathB8NLZ14Js5JV_-KyHueaD6I8IH8mU,3615
1226
1226
  tests/orchestrator/strategies/run/test_add_key_if_missing.py,sha256=hKwvk1ohcBVnQUCTiDhRW99J0xEa29BpwFi1KC0yWLE,329
1227
1227
  tests/orchestrator/strategies/run/test_always.py,sha256=w5-Dhp6yLzgZGAeMRz3OrqZbbAed9gZ1O266a3z9k7w,134
1228
- hestia_earth_models-0.67.0.dist-info/LICENSE,sha256=TD25LoiRJsA5CPUNrcyt1PXlGcbUGFMAeZoBcfCrCNE,1154
1229
- hestia_earth_models-0.67.0.dist-info/METADATA,sha256=c4dTeGL714DeJCCzVf5M-SuXV8p8SBIKVbyDHnY_67Q,4046
1230
- hestia_earth_models-0.67.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1231
- hestia_earth_models-0.67.0.dist-info/top_level.txt,sha256=1dqA9TqpOLTEgpqa-YBsmbCmmNU1y56AtfFGEceZ2A0,19
1232
- hestia_earth_models-0.67.0.dist-info/RECORD,,
1228
+ hestia_earth_models-0.67.1.dist-info/LICENSE,sha256=TD25LoiRJsA5CPUNrcyt1PXlGcbUGFMAeZoBcfCrCNE,1154
1229
+ hestia_earth_models-0.67.1.dist-info/METADATA,sha256=0rZS_1PvrGQF1RreEZE_EjDXwvIQgjDSyknNAhRL2HI,4046
1230
+ hestia_earth_models-0.67.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
1231
+ hestia_earth_models-0.67.1.dist-info/top_level.txt,sha256=1dqA9TqpOLTEgpqa-YBsmbCmmNU1y56AtfFGEceZ2A0,19
1232
+ hestia_earth_models-0.67.1.dist-info/RECORD,,
@@ -9,38 +9,72 @@ from tests.utils import fixtures_path, fake_new_indicator
9
9
  class_path = f"hestia_earth.models.{MODEL}.{TERM_ID}"
10
10
  fixtures_folder = f"{fixtures_path}/{MODEL}/{TERM_ID}"
11
11
 
12
- diesel_input = {"term": {"termType": "fuel", "units": "kg", "@id": "diesel"}, "value": 2}
13
- diesel_input_in_mj = {"term": {"termType": "fuel", "units": "MJ", "@id": "diesel"}, "value": 111}
14
- diesel_input_wrong_unit = {"term": {"termType": "fuel", "units": "foobedoos", "@id": "diesel"}, "value": 2}
15
- diesel_input_no_unit = {"term": {"termType": "fuel", "@id": "diesel"}, "value": 2}
16
- diesel_input_with_properties = {"term": {"termType": "fuel", "units": "kg", "@id": "diesel"},
17
- "value": 2,
18
- "properties": [{"term": {"@id": "energyContentHigherHeatingValue", }, "value": 70}]
19
- }
20
- diesel_input_with_properties2 = {"term": {"termType": "fuel", "units": "kg", "@id": "diesel"},
21
- "value": 2,
22
- "properties": [{"term": {"@id": "energyContentHigherHeatingValue", }, "value": 4}]
23
- }
24
-
25
- electricity_input = {"term": {"termType": "electricity", "units": "kWh", "@id": "electricityGridOil"}, "value": 30}
26
-
27
- input_coal_tar_kg = {"term": {"@id": "coalTar", "termType": "fuel", "units": "kg",
28
- "name": "Coal tar unknown energy Content"},
29
- "value": 5}
30
-
31
- input_crude_oil_kg_property = {"term": {"@id": "conventionalCrudeOil", "termType": "fuel", "units": "kg"},
32
- "value": 5,
33
- "properties": [{"@type": "Property", "value": 45.8,
34
- "term": {"@type": "Term", "@id": "energyContentHigherHeatingValue",
35
- "units": "MJ / kg"}, }]}
36
-
37
- input_crude_oil_kg_no_property = {"term": {"@id": "conventionalCrudeOil", "termType": "fuel", "units": "kg"},
38
- "value": 5}
39
-
40
- input_natural_gas_m3 = {"term": {"@id": "naturalGas", "termType": "fuel", "units": "m3"}, "value": 5}
41
-
42
- input_nuclear_fuel_kwh = {"term": {"@id": "electricityGridNuclear", "termType": "electricity", "units": "kWh"},
43
- "value": 1.3889}
12
+ diesel_input = {
13
+ "term": {"termType": "fuel", "units": "kg", "@id": "diesel"},
14
+ "value": 2,
15
+ "properties": [{"term": {"@id": "energyContentLowerHeatingValue", }, "value": 70}]
16
+ }
17
+ diesel_input_in_mj = {
18
+ "term": {"termType": "fuel", "units": "MJ", "@id": "diesel"},
19
+ "value": 111
20
+ }
21
+ diesel_input_wrong_unit = {
22
+ "term": {"termType": "fuel", "units": "foobedoos", "@id": "diesel"},
23
+ "value": 2
24
+ }
25
+ diesel_input_no_unit = {
26
+ "term": {"termType": "fuel", "@id": "diesel"},
27
+ "value": 2
28
+ }
29
+ diesel_input_with_properties = {
30
+ "term": {"termType": "fuel", "units": "kg", "@id": "diesel"},
31
+ "value": 2,
32
+ "properties": [{"term": {"@id": "energyContentLowerHeatingValue", }, "value": 70}]
33
+ }
34
+ diesel_input_with_properties2 = {
35
+ "term": {"termType": "fuel", "units": "kg", "@id": "diesel"},
36
+ "value": 2,
37
+ "properties": [{"term": {"@id": "energyContentLowerHeatingValue", }, "value": 4}]
38
+ }
39
+
40
+ electricity_input = {
41
+ "term": {"termType": "electricity", "units": "kWh", "@id": "electricityGridOil"},
42
+ "value": 30
43
+ }
44
+
45
+ input_coal_tar_kg = {
46
+ "term": {"@id": "coalTar", "termType": "fuel", "units": "kg", "name": "Coal tar unknown energy Content"},
47
+ "value": 5
48
+ }
49
+
50
+ input_crude_oil_kg_property = {
51
+ "term": {"@id": "conventionalCrudeOil", "termType": "fuel", "units": "kg"},
52
+ "value": 5,
53
+ "properties": [{
54
+ "@type": "Property",
55
+ "value": 45.8,
56
+ "term": {"@type": "Term", "@id": "energyContentLowerHeatingValue", "units": "MJ / kg"},
57
+ }]
58
+ }
59
+
60
+ input_natural_gas_m3 = {
61
+ "term": {"@id": "naturalGas", "termType": "fuel", "units": "m3"},
62
+ "value": 5,
63
+ "properties": [{
64
+ "@type": "Property",
65
+ "value": 45.8,
66
+ "term": {"@type": "Term", "@id": "energyContentLowerHeatingValue", "units": "MJ / kg"},
67
+ }, {
68
+ "@type": "Property",
69
+ "value": 45.8,
70
+ "term": {"@type": "Term", "@id": "density", "units": "kg / m3"},
71
+ }]
72
+ }
73
+
74
+ input_nuclear_fuel_kwh = {
75
+ "term": {"@id": "electricityGridNuclear", "termType": "electricity", "units": "kWh"},
76
+ "value": 1.3889
77
+ }
44
78
 
45
79
 
46
80
  @pytest.mark.parametrize(
@@ -57,7 +91,6 @@ input_nuclear_fuel_kwh = {"term": {"@id": "electricityGridNuclear", "termType":
57
91
  ([electricity_input], True, 1),
58
92
  ([electricity_input, electricity_input, electricity_input], True, 1),
59
93
  ([input_crude_oil_kg_property], True, 1),
60
- ([input_crude_oil_kg_no_property], True, 1),
61
94
  ([input_natural_gas_m3], True, 1),
62
95
  ([input_nuclear_fuel_kwh], True, 1),
63
96
  ([input_coal_tar_kg], False, 0),
@@ -74,13 +107,13 @@ input_nuclear_fuel_kwh = {"term": {"@id": "electricityGridNuclear", "termType":
74
107
  "good electric input => run",
75
108
  "multiple good merg-able electric inputs => run",
76
109
  "good fuel with input property",
77
- "good fuel with no input property",
78
110
  "good fuel in m^3",
79
111
  "good nuclear fuel use indicator in kWh",
80
112
  "bad indicator input in kg no property to convert to mj"
81
113
  ]
82
114
  )
83
- def test_should_run(inputs, expected, num_inputs):
115
+ @patch('hestia_earth.models.utils.property.download_hestia', return_value={})
116
+ def test_should_run(mock_download, inputs, expected, num_inputs):
84
117
  with open(f"{fixtures_folder}/cycle.jsonld", encoding='utf-8') as f:
85
118
  cycle = json.load(f)
86
119
 
@@ -18,31 +18,55 @@ def fake_rounded_indicator(value: float):
18
18
  return indicator
19
19
 
20
20
 
21
+ methodModelEFV31 = {"@type": "Term", "@id": "environmentalFootprintV3-1"}
22
+ methodModelFantkeEtAl2016 = {"@type": "Term", "@id": "fantkeEtAl2016"}
23
+
21
24
  ozone_indicator = {"@type": "Indicator",
22
25
  "term": {"@id": "ozoneDepletionPotential", "termType": "characterisedIndicator"},
23
- "value": 0}
26
+ "value": 0,
27
+ "methodModel": {"@type": "Term", "@id": "edip2003"}}
24
28
 
29
+ other_valid_ozone_indicator = {"@type": "Indicator",
30
+ "term": {"@id": "ozoneDepletionPotential", "termType": "characterisedIndicator"},
31
+ "value": 0,
32
+ "methodModel": {"@type": "Term", "@id": "recipe2016Hierarchist"}}
25
33
  acid_indicator = {
26
34
  "@type": "Indicator",
27
35
  "term": {"@id": "terrestrialAcidificationPotentialAccumulatedExceedance", "termType": "characterisedIndicator"},
28
- "value": 0.000420443840380047}
36
+ "value": 0.000420443840380047,
37
+ "methodModel": {"@type": "Term", "@id": "poschEtAl2008"}
38
+ }
29
39
 
30
40
  bad_indicator_id = {"@type": "Indicator",
31
41
  "term": {"@id": "no_a_real_id", "termType": "characterisedIndicator"},
32
- "value": 0.000420443840380047}
42
+ "value": 0.000420443840380047,
43
+ "methodModel": methodModelEFV31
44
+ }
33
45
 
34
46
  not_pef_indicator = {"@type": "Indicator",
35
47
  "term": {"@id": "gwpStar", "termType": "characterisedIndicator"},
36
- "value": 0.000420443840380047}
48
+ "value": 0.000420443840380047,
49
+ "methodModel": methodModelEFV31
50
+ }
37
51
 
38
52
  bad_indicator_no_val = {"@type": "Indicator",
39
53
  "term": {"@id": "damageToHumanHealthParticulateMatterFormation",
40
- "termType": "characterisedIndicator"}}
54
+ "termType": "characterisedIndicator"},
55
+ "methodModel": methodModelFantkeEtAl2016
56
+ }
41
57
 
42
58
  bad_indicator_bad_val = {"@type": "Indicator",
43
59
  "term": {"@id": "damageToHumanHealthParticulateMatterFormation",
44
60
  "termType": "characterisedIndicator"},
45
- "value": None}
61
+ "value": None,
62
+ "methodModel": methodModelFantkeEtAl2016
63
+ }
64
+
65
+ bad_indicator_no_method_model = {
66
+ "@type": "Indicator",
67
+ "term": {"@id": "terrestrialAcidificationPotentialAccumulatedExceedance", "termType": "characterisedIndicator"},
68
+ "value": 0.000420443840380047
69
+ }
46
70
 
47
71
 
48
72
  @mark.parametrize(
@@ -53,10 +77,13 @@ bad_indicator_bad_val = {"@type": "Indicator",
53
77
  ([not_pef_indicator], False, 0),
54
78
  ([bad_indicator_no_val], False, 0),
55
79
  ([bad_indicator_bad_val], False, 0),
80
+ ([bad_indicator_no_method_model], False, 0),
81
+ ([other_valid_ozone_indicator], False, 0),
56
82
  ([ozone_indicator], True, 1),
57
83
  ([ozone_indicator, ozone_indicator], False, 2),
58
84
  ([ozone_indicator, acid_indicator], True, 2),
59
- ([bad_indicator_no_val, acid_indicator], False, 1)
85
+ ([ozone_indicator, other_valid_ozone_indicator], True, 1),
86
+ ([bad_indicator_no_val, acid_indicator], False, 1),
60
87
  ],
61
88
  ids=[
62
89
  "No indicators => no run",
@@ -64,9 +91,12 @@ bad_indicator_bad_val = {"@type": "Indicator",
64
91
  "not_pef_indicator => no run",
65
92
  "bad_indicator_no_val => no run",
66
93
  "bad_indicator_bad_val => no run",
67
- "ozone_indicator => run",
94
+ "bad_indicator_no_method_model => no run",
95
+ "ozone_indicator not pef=> no run",
96
+ "ozone_indicator pef => run",
68
97
  "2 ozone_indicator => no run",
69
98
  "2 good indicators => run",
99
+ "2 ozone_indicator different methodModel => run with 1",
70
100
  "one bad one good indicator => no run",
71
101
  ]
72
102
  )