hestia-earth-models 0.64.1__py3-none-any.whl → 0.64.3__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.
Potentially problematic release.
This version of hestia-earth-models might be problematic. Click here for more details.
- hestia_earth/models/agribalyse2016/machineryInfrastructureDepreciatedAmountPerCycle.py +2 -2
- hestia_earth/models/cycle/animal/input/hestiaAggregatedData.py +5 -2
- hestia_earth/models/cycle/animal/input/properties.py +2 -1
- hestia_earth/models/cycle/animal/milkYield.py +2 -1
- hestia_earth/models/cycle/concentrateFeed.py +19 -10
- hestia_earth/models/cycle/cycleDuration.py +4 -5
- hestia_earth/models/cycle/siteDuration.py +15 -5
- hestia_earth/models/cycle/startDateDefinition.py +3 -4
- hestia_earth/models/cycle/stockingDensityAnimalHousingAverage.py +52 -0
- hestia_earth/models/ipcc2019/aboveGroundBiomass.py +762 -0
- hestia_earth/models/ipcc2019/aboveGroundBiomass_utils.py +180 -0
- hestia_earth/models/ipcc2019/animal/liveweightGain.py +88 -0
- hestia_earth/models/ipcc2019/animal/liveweightPerHead.py +88 -0
- hestia_earth/models/ipcc2019/animal/pastureGrass.py +51 -42
- hestia_earth/models/ipcc2019/animal/utils.py +20 -0
- hestia_earth/models/ipcc2019/animal/weightAtMaturity.py +10 -15
- hestia_earth/models/ipcc2019/ch4ToAirAquacultureSystems.py +96 -0
- hestia_earth/models/ipcc2019/ch4ToAirExcreta.py +2 -2
- hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1_utils.py +37 -50
- hestia_earth/models/ipcc2019/organicCarbonPerHa_utils.py +0 -19
- hestia_earth/models/ipcc2019/pastureGrass.py +44 -31
- hestia_earth/models/ipcc2019/pastureGrass_utils.py +38 -22
- hestia_earth/models/mocking/search-results.json +489 -249
- hestia_earth/models/poschEtAl2008/terrestrialEutrophicationPotentialAccumulatedExceedance.py +40 -0
- hestia_earth/models/utils/blank_node.py +20 -1
- hestia_earth/models/utils/crop.py +4 -0
- hestia_earth/models/utils/ecoClimateZone.py +99 -0
- hestia_earth/models/utils/productivity.py +1 -1
- hestia_earth/models/utils/property.py +2 -2
- hestia_earth/models/version.py +1 -1
- {hestia_earth_models-0.64.1.dist-info → hestia_earth_models-0.64.3.dist-info}/METADATA +1 -1
- {hestia_earth_models-0.64.1.dist-info → hestia_earth_models-0.64.3.dist-info}/RECORD +47 -31
- tests/models/cycle/test_siteDuration.py +22 -0
- tests/models/cycle/test_stockingDensityAnimalHousingAverage.py +42 -0
- tests/models/ipcc2019/animal/test_liveweightGain.py +20 -0
- tests/models/ipcc2019/animal/test_liveweightPerHead.py +20 -0
- tests/models/ipcc2019/animal/test_pastureGrass.py +1 -1
- tests/models/ipcc2019/test_aboveGroundBiomass.py +182 -0
- tests/models/ipcc2019/test_aboveGroundBiomass_utils.py +92 -0
- tests/models/ipcc2019/test_ch4ToAirAquacultureSystems.py +60 -0
- tests/models/ipcc2019/test_organicCarbonPerHa_tier_1_utils.py +3 -2
- tests/models/ipcc2019/test_pastureGrass.py +2 -2
- tests/models/poschEtAl2008/test_terrestrialEutrophicationPotentialAccumulatedExceedance.py +44 -0
- tests/models/utils/test_ecoClimateZone.py +152 -0
- {hestia_earth_models-0.64.1.dist-info → hestia_earth_models-0.64.3.dist-info}/LICENSE +0 -0
- {hestia_earth_models-0.64.1.dist-info → hestia_earth_models-0.64.3.dist-info}/WHEEL +0 -0
- {hestia_earth_models-0.64.1.dist-info → hestia_earth_models-0.64.3.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from hestia_earth.models.log import logRequirements, logShouldRun
|
|
2
|
+
from hestia_earth.models.utils.impact_assessment import impact_country_value
|
|
3
|
+
from hestia_earth.models.utils.indicator import _new_indicator
|
|
4
|
+
from . import MODEL
|
|
5
|
+
|
|
6
|
+
REQUIREMENTS = {
|
|
7
|
+
"ImpactAssessment": {
|
|
8
|
+
"or": {
|
|
9
|
+
"country": {"@type": "Term", "termType": "region"},
|
|
10
|
+
"site": {
|
|
11
|
+
"@type": "Site",
|
|
12
|
+
"region": {"@type": "Term", "termType": "region"}
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"emissionsResourceUse": [{"@type": "Indicator", "value": "", "term.termType": "emission"}]
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
RETURNS = {
|
|
19
|
+
"Indicator": {
|
|
20
|
+
"value": ""
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
LOOKUPS = {
|
|
24
|
+
"region-emission-terrestrialEutrophicationPotentialAccumulatedExceedance": ""
|
|
25
|
+
}
|
|
26
|
+
TERM_ID = 'terrestrialEutrophicationPotentialAccumulatedExceedance'
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _indicator(value: float):
|
|
30
|
+
indicator = _new_indicator(TERM_ID, MODEL)
|
|
31
|
+
indicator['value'] = value
|
|
32
|
+
return indicator
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def run(impact_assessment: dict):
|
|
36
|
+
value = impact_country_value(MODEL, TERM_ID, impact_assessment, f"{list(LOOKUPS.keys())[0]}.csv")
|
|
37
|
+
logRequirements(impact_assessment, model=MODEL, term=TERM_ID,
|
|
38
|
+
value=value)
|
|
39
|
+
logShouldRun(impact_assessment, MODEL, TERM_ID, True)
|
|
40
|
+
return _indicator(value)
|
|
@@ -41,6 +41,25 @@ from .lookup import (
|
|
|
41
41
|
from .term import get_lookup_value
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
def merge_blank_nodes(source: list, new_values: list):
|
|
45
|
+
"""
|
|
46
|
+
Merge a list of blank nodes into an existing list of blank nodes.
|
|
47
|
+
Warning: we only consider the `term.@id` here, and not the full list of properties that make the nodes unique.
|
|
48
|
+
This should only be used when merging simple list of nested blank nodes.
|
|
49
|
+
"""
|
|
50
|
+
for new_value in non_empty_list(new_values):
|
|
51
|
+
term_id = new_value.get('term', {}).get('@id')
|
|
52
|
+
index = next(
|
|
53
|
+
(i for i, data in enumerate(source) if data.get('term', {}).get('@id') == term_id),
|
|
54
|
+
None
|
|
55
|
+
)
|
|
56
|
+
if index is None:
|
|
57
|
+
source.append(new_value)
|
|
58
|
+
else:
|
|
59
|
+
source[index] = source[index] | new_value
|
|
60
|
+
return source
|
|
61
|
+
|
|
62
|
+
|
|
44
63
|
def lookups_logs(model: str, blank_nodes: list, lookups_per_termType: dict, **log_args):
|
|
45
64
|
def mapper(blank_node: dict):
|
|
46
65
|
term = blank_node.get('term', {})
|
|
@@ -69,7 +88,7 @@ def properties_logs(blank_nodes: list, properties: Union[dict, list]):
|
|
|
69
88
|
props = props if isinstance(props, list) else [props]
|
|
70
89
|
|
|
71
90
|
def _reduce_properties_logs(logs: dict, prop: str):
|
|
72
|
-
value = get_node_property(
|
|
91
|
+
value = get_node_property(blank_node, prop).get('value')
|
|
73
92
|
return logs | {prop: value}
|
|
74
93
|
|
|
75
94
|
return reduce(_reduce_properties_logs, properties, {'id': term_id})
|
|
@@ -37,6 +37,10 @@ def is_plantation(model: str, log_id: str, term_id: str):
|
|
|
37
37
|
return get_crop_lookup_value(model, log_id, term_id, 'isPlantation')
|
|
38
38
|
|
|
39
39
|
|
|
40
|
+
def is_permanent_crop(model: str, log_id: str, term: dict):
|
|
41
|
+
return get_crop_grouping_fao(model, log_id, term) == 'Permanent crops'
|
|
42
|
+
|
|
43
|
+
|
|
40
44
|
def valid_site_type(cycle: dict, include_permanent_pasture=False):
|
|
41
45
|
"""
|
|
42
46
|
Check if the `site.siteType` of the cycle is `cropland`.
|
|
@@ -1,7 +1,69 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
from functools import reduce
|
|
3
|
+
from typing import Any, Optional, Union
|
|
4
|
+
|
|
5
|
+
from hestia_earth.schema import NodeType
|
|
6
|
+
|
|
7
|
+
from hestia_earth.utils.blank_node import get_node_value
|
|
1
8
|
from hestia_earth.utils.lookup import download_lookup, _get_single_table_value, column_name, extract_grouped_data
|
|
9
|
+
from hestia_earth.utils.model import find_term_match
|
|
2
10
|
from hestia_earth.utils.tools import safe_parse_float
|
|
3
11
|
|
|
4
12
|
|
|
13
|
+
class EcoClimateZone(Enum):
|
|
14
|
+
"""
|
|
15
|
+
Enum representing eco-climate zones. The value of each member of the Enum correctly corresponds with the values of
|
|
16
|
+
`ecoClimateZone` term and the `ecoClimateZone-lookup.csv`.
|
|
17
|
+
"""
|
|
18
|
+
WARM_TEMPERATE_MOIST = 1
|
|
19
|
+
WARM_TEMPERATE_DRY = 2
|
|
20
|
+
COOL_TEMPERATE_MOIST = 3
|
|
21
|
+
COOL_TEMPERATE_DRY = 4
|
|
22
|
+
POLAR_MOIST = 5
|
|
23
|
+
POLAR_DRY = 6
|
|
24
|
+
BOREAL_MOIST = 7
|
|
25
|
+
BOREAL_DRY = 8
|
|
26
|
+
TROPICAL_MONTANE = 9
|
|
27
|
+
TROPICAL_WET = 10
|
|
28
|
+
TROPICAL_MOIST = 11
|
|
29
|
+
TROPICAL_DRY = 12
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def get_eco_climate_zone_value(node: dict, as_enum: bool = False) -> Union[int, EcoClimateZone, None]:
|
|
33
|
+
"""
|
|
34
|
+
Get the eco-climate zone value from a Site.
|
|
35
|
+
|
|
36
|
+
Parameters
|
|
37
|
+
----------
|
|
38
|
+
node : dict
|
|
39
|
+
A HESTIA [Site](https://www-staging.hestia.earth/schema/Site) or
|
|
40
|
+
[Cycle](https://www-staging.hestia.earth/schema/Cycle).
|
|
41
|
+
|
|
42
|
+
Returns
|
|
43
|
+
-------
|
|
44
|
+
int | None
|
|
45
|
+
The eco-climate zone value if found, otherwise `None`.
|
|
46
|
+
"""
|
|
47
|
+
site = (
|
|
48
|
+
node.get("site", {}) if node.get("@type") == NodeType.CYCLE.value
|
|
49
|
+
else node if node.get("@type") == NodeType.SITE.value
|
|
50
|
+
else {}
|
|
51
|
+
)
|
|
52
|
+
eco_climate_zone = find_term_match(site.get("measurements", []), "ecoClimateZone")
|
|
53
|
+
value = get_node_value(eco_climate_zone, default=None)
|
|
54
|
+
return _eco_climate_zone_node_value_to_enum(value) if as_enum else value
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def _eco_climate_zone_node_value_to_enum(value: Optional[int]) -> Optional[EcoClimateZone]:
|
|
58
|
+
"""
|
|
59
|
+
Safe conversion between int (`ecoClimateZone` measurement node value) and `EcoClimateZone` enum members.
|
|
60
|
+
|
|
61
|
+
If node value is invalid, return `None`.
|
|
62
|
+
"""
|
|
63
|
+
should_run = isinstance(value, int) and 1 <= value <= 12
|
|
64
|
+
return EcoClimateZone(value) if should_run else None
|
|
65
|
+
|
|
66
|
+
|
|
5
67
|
def get_ecoClimateZone_lookup_value(eco_climate_zone: str, col_name: str, group_name: str = None) -> float:
|
|
6
68
|
"""
|
|
7
69
|
Get a value from the `ecoClimateZone` lookup table.
|
|
@@ -29,3 +91,40 @@ def get_ecoClimateZone_lookup_value(eco_climate_zone: str, col_name: str, group_
|
|
|
29
91
|
)
|
|
30
92
|
except Exception:
|
|
31
93
|
return 0
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def get_ecoClimateZone_lookup_grouped_value(
|
|
97
|
+
eco_climate_zone: str, col_name: str, default: Any = None
|
|
98
|
+
) -> Optional[dict]:
|
|
99
|
+
"""
|
|
100
|
+
Get a grouped value from the `ecoClimateZone` lookup table formatted as a dictionary
|
|
101
|
+
|
|
102
|
+
Parameters
|
|
103
|
+
----------
|
|
104
|
+
eco_climate_zone : str
|
|
105
|
+
The `ecoClimateZone` as a string.
|
|
106
|
+
col_name : str
|
|
107
|
+
The name of the column in the lookup table.
|
|
108
|
+
default : Any, optional
|
|
109
|
+
The default value to return if no lookup value, or invalid lookup value is retrieved.
|
|
110
|
+
|
|
111
|
+
Returns
|
|
112
|
+
-------
|
|
113
|
+
float
|
|
114
|
+
The value associated with the `ecoClimateZone`.
|
|
115
|
+
"""
|
|
116
|
+
try:
|
|
117
|
+
lookup = download_lookup('ecoClimateZone.csv')
|
|
118
|
+
code = int(str(eco_climate_zone))
|
|
119
|
+
data = _get_single_table_value(lookup, column_name('ecoClimateZone'), code, column_name(col_name))
|
|
120
|
+
grouped_data = reduce(
|
|
121
|
+
lambda prev, curr: {
|
|
122
|
+
**prev,
|
|
123
|
+
**{curr.split(':')[0]: safe_parse_float(curr.split(':')[1])}
|
|
124
|
+
},
|
|
125
|
+
data.split(';'),
|
|
126
|
+
{}
|
|
127
|
+
) if data is not None and isinstance(data, str) and len(data) > 1 else default
|
|
128
|
+
return grouped_data
|
|
129
|
+
except Exception:
|
|
130
|
+
return default
|
|
@@ -16,6 +16,6 @@ PRODUCTIVITY_KEY = {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
def
|
|
19
|
+
def get_productivity(country: dict, default: PRODUCTIVITY = PRODUCTIVITY.HIGH):
|
|
20
20
|
hdi = safe_parse_float(get_lookup_value(country, 'hdi'), None)
|
|
21
21
|
return next((key for key in PRODUCTIVITY_KEY if hdi and PRODUCTIVITY_KEY[key](hdi)), default)
|
|
@@ -103,12 +103,12 @@ def node_property_lookup_value(model: str, node_term: dict, prop_id: str, defaul
|
|
|
103
103
|
return default
|
|
104
104
|
|
|
105
105
|
|
|
106
|
-
def get_node_property_value(model: str, node: dict, prop_id: str, default=None, **log_args):
|
|
106
|
+
def get_node_property_value(model: str, node: dict, prop_id: str, default=None, handle_percents=True, **log_args):
|
|
107
107
|
prop = get_node_property(node, prop_id)
|
|
108
108
|
term = (prop or {}).get('term', download_hestia(prop_id))
|
|
109
109
|
units = (term or {}).get('units')
|
|
110
110
|
value = prop.get('value') if prop else node_property_lookup_value(model, node.get('term', {}), prop_id, **log_args)
|
|
111
|
-
return default if value is None else (value / 100 if units == '%' else value)
|
|
111
|
+
return default if value is None else (value / 100 if units == '%' and handle_percents else value)
|
|
112
112
|
|
|
113
113
|
|
|
114
114
|
def get_node_property_value_converted(model: str, node: dict, prop_id: str, default=None, **log_args):
|
hestia_earth/models/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
VERSION = '0.64.
|
|
1
|
+
VERSION = '0.64.3'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: hestia-earth-models
|
|
3
|
-
Version: 0.64.
|
|
3
|
+
Version: 0.64.3
|
|
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,10 +4,10 @@ hestia_earth/models/cache_sites.py,sha256=KQp9cUKE-aIcYJoMWEtKFYS8gBFfsx5LKQhqoW
|
|
|
4
4
|
hestia_earth/models/log.py,sha256=DbfNcGzaC5hzkuMDxQqW6XYoNBI4Uxw4SIoOYoZA6og,3474
|
|
5
5
|
hestia_earth/models/preload_requests.py,sha256=Ibx-YOhR_1yuyFBxsLUbvJHVK7PLyMLoPu5l9jDN_Qk,1342
|
|
6
6
|
hestia_earth/models/requirements.py,sha256=eU4yT443fx7BnaokhrLB_PCizJI7Y6m4auyo8vQauNg,17363
|
|
7
|
-
hestia_earth/models/version.py,sha256=
|
|
7
|
+
hestia_earth/models/version.py,sha256=cWRcfrSfUqZXz_T4QMCr6gCvhrQsvhSQIXauvglcjCA,19
|
|
8
8
|
hestia_earth/models/agribalyse2016/__init__.py,sha256=WvK0qCQbnYtg9oZxrACd1wGormZyXibPtpCnIQeDqbw,415
|
|
9
9
|
hestia_earth/models/agribalyse2016/fuelElectricity.py,sha256=tnGxBmJdPfPFfehLUQcefEqy1lHvzsSpx_s7O8nf3Zs,4412
|
|
10
|
-
hestia_earth/models/agribalyse2016/machineryInfrastructureDepreciatedAmountPerCycle.py,sha256=
|
|
10
|
+
hestia_earth/models/agribalyse2016/machineryInfrastructureDepreciatedAmountPerCycle.py,sha256=BPjnWmg73i_OxM2ouCdMTWZtPIqyoUAXrvutntyteE0,3390
|
|
11
11
|
hestia_earth/models/akagiEtAl2011AndIpcc2006/__init__.py,sha256=WK7xQwUPX48JGqZeb2S2EKdtXuxMjY7HYyUFHItUqUo,425
|
|
12
12
|
hestia_earth/models/akagiEtAl2011AndIpcc2006/ch4ToAirCropResidueBurning.py,sha256=Mea3L8blwJpRzzJHIMJH71Pn93gz1M2KN2pb43tGBfs,1642
|
|
13
13
|
hestia_earth/models/akagiEtAl2011AndIpcc2006/n2OToAirCropResidueBurningDirect.py,sha256=3_Q3Q2d80y05sFpg_UfLHtjhzSdkG_PRntVD52B-BOI,1648
|
|
@@ -37,10 +37,10 @@ hestia_earth/models/cycle/__init__.py,sha256=VowO3kOHb0LpURsljNaJsYO7s6vgjhul6bF
|
|
|
37
37
|
hestia_earth/models/cycle/aboveGroundCropResidueTotal.py,sha256=9swq4YEeJQ2YjVOmghgBYWkMZWdNU4MKCUBY5FsmBSU,3088
|
|
38
38
|
hestia_earth/models/cycle/coldCarcassWeightPerHead.py,sha256=fQ7huuxyS5PQkRmR_tRCOz9rV3LJwLfLQJjH_TcTz6k,2955
|
|
39
39
|
hestia_earth/models/cycle/coldDressedCarcassWeightPerHead.py,sha256=k0xg5SIfJGwEKteFr2Fh-lh8yDC_sqQw_lBnnfwl9zU,3069
|
|
40
|
-
hestia_earth/models/cycle/concentrateFeed.py,sha256=
|
|
40
|
+
hestia_earth/models/cycle/concentrateFeed.py,sha256=0oL2Odcl9PEZJyG6gfH8bGPNHAICpTFfuL1bJalTJg0,5985
|
|
41
41
|
hestia_earth/models/cycle/cropResidueManagement.py,sha256=QTRCCFu9VvD_a3_8aAj216vsuhAJEhlAwTJH7ifMkDo,2237
|
|
42
42
|
hestia_earth/models/cycle/croppingIntensity.py,sha256=44CgDqXg9CBRfTPYTyOleQT-M4_tsQgPba-0vjjk_C4,1770
|
|
43
|
-
hestia_earth/models/cycle/cycleDuration.py,sha256=
|
|
43
|
+
hestia_earth/models/cycle/cycleDuration.py,sha256=ccODF5CJBEd55-CMttCr0eI4uH7OoRvYJZjcth09QMg,3193
|
|
44
44
|
hestia_earth/models/cycle/endDate.py,sha256=xxTa3Pmu7udJwGYiTn7tcp9_Pl_SM7de9ezbR7sYvUk,1382
|
|
45
45
|
hestia_earth/models/cycle/energyContentLowerHeatingValue.py,sha256=AyVKCQbb3Pto3Ca__F0KJ_wlwTxbPd7mUyehZW7AJPM,2212
|
|
46
46
|
hestia_earth/models/cycle/excretaKgMass.py,sha256=iA8Kfl3WvyxbQpx1QOGPQZ9O_Pc5rj7xhucYx3rB8Co,3949
|
|
@@ -59,19 +59,20 @@ hestia_earth/models/cycle/residueBurnt.py,sha256=HwU1D9ibiIul-FlXDUcEMDEc_KxpB8u
|
|
|
59
59
|
hestia_earth/models/cycle/residueIncorporated.py,sha256=9_s2RMOy5D20eq9ziDBEA_Y7RiFFMeK0bDJ65CW4qlE,2763
|
|
60
60
|
hestia_earth/models/cycle/residueLeftOnField.py,sha256=qYxKGAdUORN7Vjqj7AZC2VGV_rM3MN0-padDGhgjiNU,2175
|
|
61
61
|
hestia_earth/models/cycle/residueRemoved.py,sha256=jxDu_Jfcyd-rm-qo8ZuRIf-GGxtFBMpmGy1zHOavwy0,2135
|
|
62
|
-
hestia_earth/models/cycle/siteDuration.py,sha256=
|
|
62
|
+
hestia_earth/models/cycle/siteDuration.py,sha256=8VCYn608Lw1A6gLOG2bA1Z2tAQbmDg_yXeq6sgkrXac,2342
|
|
63
63
|
hestia_earth/models/cycle/siteUnusedDuration.py,sha256=orYGlbzGMpjuDAtZe7KkCOLWrwUYR1H4A0ccAbutW3s,2189
|
|
64
64
|
hestia_earth/models/cycle/startDate.py,sha256=pbBi55b6uJezPE8EOovOCSwQVrbwpmxwmravOCIh2zg,2683
|
|
65
|
-
hestia_earth/models/cycle/startDateDefinition.py,sha256
|
|
65
|
+
hestia_earth/models/cycle/startDateDefinition.py,sha256=6oJmT6XRKYbv2Jer2UJpkOQqHQKjIAEqPz7yv7k-HP4,2187
|
|
66
|
+
hestia_earth/models/cycle/stockingDensityAnimalHousingAverage.py,sha256=RQaVqyWSBWOSDl7pcnOm-nqWqgZlMsJaXd2Stu08-Qg,1542
|
|
66
67
|
hestia_earth/models/cycle/transformation.py,sha256=06KTfVubh2I47dfnG9Iv6AbuUBbURM8BAVOkRu7XmHw,1255
|
|
67
68
|
hestia_earth/models/cycle/unknownPreSeasonWaterRegime.py,sha256=9EP8FMXO5fHqmhVNSqR_Dfe38KxwyPOCF6kMewiI_VE,1478
|
|
68
69
|
hestia_earth/models/cycle/utils.py,sha256=ZcVwvRwVNK48jZfnhrHl2ai4a96YzcmRgO-eQXwQNjo,1408
|
|
69
70
|
hestia_earth/models/cycle/animal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
-
hestia_earth/models/cycle/animal/milkYield.py,sha256=
|
|
71
|
+
hestia_earth/models/cycle/animal/milkYield.py,sha256=O5-OruRhUpKpxsfhGskTHLP8PDd-awAxlEh8acq_PaQ,3011
|
|
71
72
|
hestia_earth/models/cycle/animal/properties.py,sha256=OGjRl79w-h439jTkjA8b4V61fMuo0McoUs3JrgK-0Zc,596
|
|
72
73
|
hestia_earth/models/cycle/animal/input/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
-
hestia_earth/models/cycle/animal/input/hestiaAggregatedData.py,sha256=
|
|
74
|
-
hestia_earth/models/cycle/animal/input/properties.py,sha256=
|
|
74
|
+
hestia_earth/models/cycle/animal/input/hestiaAggregatedData.py,sha256=EpJ6qU0jsoSMEuZYIKCn1f-loJ53_nmpnyDhH5sZTuw,2529
|
|
75
|
+
hestia_earth/models/cycle/animal/input/properties.py,sha256=qFdvoRa5RtQrf-CnWHdi6g40lD4Rncrb_610O0lhUq0,3439
|
|
75
76
|
hestia_earth/models/cycle/completeness/__init__.py,sha256=rkwGtxIay_AleJCT7al_ngnix_xRqySVie7qvHXMQI0,1517
|
|
76
77
|
hestia_earth/models/cycle/completeness/animalFeed.py,sha256=8Fo1TqwSuiPudvd2vJ-LVxSyOdD8mDCOZMvjuj5W2uo,1012
|
|
77
78
|
hestia_earth/models/cycle/completeness/cropResidue.py,sha256=zSiu9h0NxEBDUWlaKBh1QcX4jDIklrs0BC2NWMCQQ80,2549
|
|
@@ -229,11 +230,14 @@ hestia_earth/models/ipcc2013ExcludingFeedbacks/gwp100.py,sha256=8VRg-Vvzc86_CQmB
|
|
|
229
230
|
hestia_earth/models/ipcc2013IncludingFeedbacks/__init__.py,sha256=VJ16KIGQQHybzZiTvu3mpZy_3j0xcd06RHHCfPrCMgU,427
|
|
230
231
|
hestia_earth/models/ipcc2013IncludingFeedbacks/gwp100.py,sha256=PTE0FEV5x7MZgWpA6iu7EtIYaYKl6Udc9icpafkqlEA,979
|
|
231
232
|
hestia_earth/models/ipcc2019/__init__.py,sha256=LdRpu8KbEc-MroIwXfKDjfj-xbgmfUYgctjKVvtpRfQ,409
|
|
233
|
+
hestia_earth/models/ipcc2019/aboveGroundBiomass.py,sha256=6nsyVJgFutf4r9ur73mgQE_6j91opQr4fR1I0o1sZYs,26316
|
|
234
|
+
hestia_earth/models/ipcc2019/aboveGroundBiomass_utils.py,sha256=orzL_o_V4u9n7KyBKKs28m0MSox7qwKHmQ58R66ekXU,7027
|
|
232
235
|
hestia_earth/models/ipcc2019/aboveGroundCropResidueTotal.py,sha256=lT2QVV5c2LvQqZRfPEvFT_bMTayMXgIsFLnx8I6iYzw,3089
|
|
233
236
|
hestia_earth/models/ipcc2019/belowGroundCropResidue.py,sha256=7AFU2Q0qPAvv6uEKWByS38jl77FvjTPbGm2GQ53waGg,3499
|
|
234
237
|
hestia_earth/models/ipcc2019/carbonContent.py,sha256=tlQvu4Auhpjmaz7XrZz86xwxVrJhsYYf8DFA_aQeev4,7255
|
|
238
|
+
hestia_earth/models/ipcc2019/ch4ToAirAquacultureSystems.py,sha256=q6yyEiYQhHJ2VyQy2Fa84cuTl1D8bjBXOK3UpaRuo20,3196
|
|
235
239
|
hestia_earth/models/ipcc2019/ch4ToAirEntericFermentation.py,sha256=khX90NjkmlvosyRZ77QxgwTKwg42Z_ftOWTTAanHViw,11420
|
|
236
|
-
hestia_earth/models/ipcc2019/ch4ToAirExcreta.py,sha256=
|
|
240
|
+
hestia_earth/models/ipcc2019/ch4ToAirExcreta.py,sha256=eY_yb7ncTb_2HoUUgXZnnRHiybTXYj_DTe3CmDzD3fY,6717
|
|
237
241
|
hestia_earth/models/ipcc2019/ch4ToAirFloodedRice.py,sha256=TJ4J7VA5n4RPrJYZQeR3lc3ZoCw7T1E5Cb1XJewr834,7331
|
|
238
242
|
hestia_earth/models/ipcc2019/co2ToAirLimeHydrolysis.py,sha256=7z0zdqiiWQwkyJCgSNMoK2mft3cJkTRlqwKrMuSKdWI,2454
|
|
239
243
|
hestia_earth/models/ipcc2019/co2ToAirSoilOrganicCarbonStockChangeManagementChange.py,sha256=D-4h4a8Ob_radqS6Gj3K8eLqTeXJrFIbfO9viusd6Pc,27585
|
|
@@ -258,15 +262,18 @@ hestia_earth/models/ipcc2019/no3ToGroundwaterOrganicFertiliser.py,sha256=px2SN-u
|
|
|
258
262
|
hestia_earth/models/ipcc2019/noxToAirInorganicFertiliser.py,sha256=fmmFgjtvOD2TrrLY03jYly_KvDnCsAXqhL_tmZQQt-A,4480
|
|
259
263
|
hestia_earth/models/ipcc2019/noxToAirOrganicFertiliser.py,sha256=9dx_MRTwJGxJRq6mj2EJQMdQ2w6j7lw0fQk0If_cIGc,4152
|
|
260
264
|
hestia_earth/models/ipcc2019/organicCarbonPerHa.py,sha256=iRUSVxMpBGgsVDkuBABPKI4Khr5jIpAwuBe66c1PeV0,8658
|
|
261
|
-
hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1_utils.py,sha256=
|
|
265
|
+
hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1_utils.py,sha256=d112vbcbKHHoy0q3ncaI3d9dsAPydSEaWbXWupJe1-c,81908
|
|
262
266
|
hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_2_utils.py,sha256=A84r6u45HFk5jEb2nTWGTFTwX1qjq8F6qwkNUuiyH48,63542
|
|
263
|
-
hestia_earth/models/ipcc2019/organicCarbonPerHa_utils.py,sha256=
|
|
264
|
-
hestia_earth/models/ipcc2019/pastureGrass.py,sha256=
|
|
265
|
-
hestia_earth/models/ipcc2019/pastureGrass_utils.py,sha256=
|
|
267
|
+
hestia_earth/models/ipcc2019/organicCarbonPerHa_utils.py,sha256=HGJC2zcEvtbkovccAZ5MYm84wBXUZH0Q3UyJOXD0ltA,10157
|
|
268
|
+
hestia_earth/models/ipcc2019/pastureGrass.py,sha256=w8LMbxJTdZtC2nrWoooPA0jrA9-FIFBZA-dBpGyqAUg,10158
|
|
269
|
+
hestia_earth/models/ipcc2019/pastureGrass_utils.py,sha256=Bzz4yPDdA7YVUhhJhQCCVu0uKONeO3b6a48_ZITZgzU,13889
|
|
266
270
|
hestia_earth/models/ipcc2019/utils.py,sha256=MSDMu15D9DnilFUgi4_6jYXC0FaKso3OODauGTMB6hs,6229
|
|
267
271
|
hestia_earth/models/ipcc2019/animal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
268
|
-
hestia_earth/models/ipcc2019/animal/
|
|
269
|
-
hestia_earth/models/ipcc2019/animal/
|
|
272
|
+
hestia_earth/models/ipcc2019/animal/liveweightGain.py,sha256=FssMhdOvPpLqzojWTgnpZYGd3w1FC5CUd9fwdiYJRzU,2558
|
|
273
|
+
hestia_earth/models/ipcc2019/animal/liveweightPerHead.py,sha256=UKr1JvZyDv38ThvJdBO_OO09TzlSiSX49M-HOZ6CN9E,2574
|
|
274
|
+
hestia_earth/models/ipcc2019/animal/pastureGrass.py,sha256=edBXCVjJB5ZBGJ9_zE3H6xKpT84hPqe3dv5JF879tXw,12066
|
|
275
|
+
hestia_earth/models/ipcc2019/animal/utils.py,sha256=ziyphGLEO_eitOLtBG0BLpJfmN3csqUetFZuDo8FX2U,990
|
|
276
|
+
hestia_earth/models/ipcc2019/animal/weightAtMaturity.py,sha256=snbCjA2AZImd3yr4DIl5XwwoVoX9xF7djTuHI1qJmCA,3329
|
|
270
277
|
hestia_earth/models/ipcc2021/__init__.py,sha256=VTgGFKhwMmk_nuI1RRq0in27fHYVPBonlXlPK00K8no,409
|
|
271
278
|
hestia_earth/models/ipcc2021/gwp100.py,sha256=v-DYU-11XnWI1Ns1GEiKrJqL3JafxvhTsLmuBuFcxJU,1021
|
|
272
279
|
hestia_earth/models/jarvisAndPain1994/__init__.py,sha256=ercUwy29sV7oPIESj8UjsGB5lqiBCss9OZcbjxeeG8E,418
|
|
@@ -379,7 +386,7 @@ hestia_earth/models/linkedImpactAssessment/landTransformationFromPermanentPastur
|
|
|
379
386
|
hestia_earth/models/linkedImpactAssessment/utils.py,sha256=dGwGc2d-8_WQElTpfyPmz5vQtL-LHQRmiZnCTuPXMDs,1876
|
|
380
387
|
hestia_earth/models/mocking/__init__.py,sha256=n3Fkkrvh8zHNWiJZmnfQ7WZ91JRzAO9P6pSG1JpwtXo,687
|
|
381
388
|
hestia_earth/models/mocking/mock_search.py,sha256=qgABw-sZK37XtsALKt8AHF2VJPUrZSnHv5Qj1Dn93oA,2405
|
|
382
|
-
hestia_earth/models/mocking/search-results.json,sha256=
|
|
389
|
+
hestia_earth/models/mocking/search-results.json,sha256=MG2gaJm0DPR-7nRYr3IN5_cRvNcquom-gY02_5hMP5k,53136
|
|
383
390
|
hestia_earth/models/pooreNemecek2018/__init__.py,sha256=nPboL7ULJzL5nJD5q7q9VOZt_fxbKVm8fmn1Az5YkVY,417
|
|
384
391
|
hestia_earth/models/pooreNemecek2018/aboveGroundCropResidueTotal.py,sha256=Qt-mel4dkhK6N5uUOutNOinCTFjbjtGzITaaI0LvYc4,2396
|
|
385
392
|
hestia_earth/models/pooreNemecek2018/belowGroundCropResidue.py,sha256=JT0RybbvWVlo01FO8K0Yj41HrEaJT3Kj1xfayr2X-xw,2315
|
|
@@ -408,6 +415,7 @@ hestia_earth/models/pooreNemecek2018/saplings.py,sha256=LS0zepV51-LlVmPBAjj5nlfg
|
|
|
408
415
|
hestia_earth/models/pooreNemecek2018/utils.py,sha256=to2vtONKCbuG1gVSDvsUcG7EnlahELfG_57gzIAHlv0,1710
|
|
409
416
|
hestia_earth/models/poschEtAl2008/__init__.py,sha256=nvyyGglxCTV4PpxcOjY7jJb0v8Bjzj435Zt1j6VcryM,414
|
|
410
417
|
hestia_earth/models/poschEtAl2008/terrestrialAcidificationPotentialAccumulatedExceedance.py,sha256=gbD8fgvdHANXsuPPWRx4Flcqhk3fPD5ROrrb2LMgmS8,1279
|
|
418
|
+
hestia_earth/models/poschEtAl2008/terrestrialEutrophicationPotentialAccumulatedExceedance.py,sha256=X1CixghiqYiE1N-sWhXuFcy9nxCA2RdBiClFAgUWTgw,1281
|
|
411
419
|
hestia_earth/models/recipe2016Egalitarian/__init__.py,sha256=OvZoSgfaMe6DWIdqr-Sx3ouzXlp994oro7Mi0Xid18Q,422
|
|
412
420
|
hestia_earth/models/recipe2016Egalitarian/damageToFreshwaterEcosystemsSpeciesYear.py,sha256=b1UZAsy3yGlHYxH2YhBhhSnjm5zzQl8Z32DcQBjgWNE,1123
|
|
413
421
|
hestia_earth/models/recipe2016Egalitarian/damageToHumanHealth.py,sha256=dJ8WinGe52wFQCMKtT_B7c1MFM_GbBo8aqfw0n2pw94,1087
|
|
@@ -543,16 +551,16 @@ hestia_earth/models/utils/aggregated.py,sha256=sz6usleZmo_tC_hIvmGgYsX8-H0dulXmm
|
|
|
543
551
|
hestia_earth/models/utils/animalProduct.py,sha256=M5IunAKGY6oZv3j1Ascl34ywyeLWApqOIlBzbtlA2FE,721
|
|
544
552
|
hestia_earth/models/utils/aquacultureManagement.py,sha256=dxrbC1Xf140cohxTbSw6TxLAnAASWTdNZwBBam4yQnw,171
|
|
545
553
|
hestia_earth/models/utils/array_builders.py,sha256=0_Ik0gKoh1QBijyb-55odh8_dIs-CWQ3lgUN1Hnc4Y8,18749
|
|
546
|
-
hestia_earth/models/utils/blank_node.py,sha256=
|
|
554
|
+
hestia_earth/models/utils/blank_node.py,sha256=YlHyxirCIt7PGEBJoal7cOXzegWbX9X3cpknKEznlQc,45238
|
|
547
555
|
hestia_earth/models/utils/completeness.py,sha256=2-GusD9UycobDZq8y5jar0ZcOjyqnSbzPRT_5XMc4YA,1259
|
|
548
556
|
hestia_earth/models/utils/constant.py,sha256=7wn5LBdsqlLdCrPaVASYjsxNtbaOSdqVWKedOFgyzfY,3249
|
|
549
|
-
hestia_earth/models/utils/crop.py,sha256=
|
|
557
|
+
hestia_earth/models/utils/crop.py,sha256=5KigEHd15nT8O9_1woxKJF5rEWiSkIkJqDAXet8BB9g,2383
|
|
550
558
|
hestia_earth/models/utils/cropResidue.py,sha256=_0Q35CrliJeo31xGHsPWe8A2oHxijdIsOrf3gBEqhlA,612
|
|
551
559
|
hestia_earth/models/utils/cropResidueManagement.py,sha256=nIDFjf39rDD10UHSVudfDyu-EiL261g8jyrgS-2aDKw,347
|
|
552
560
|
hestia_earth/models/utils/currency.py,sha256=f_ArJANb--pZq4LL49SXQ1AMX_oKroqwBXKRRQqZwsM,578
|
|
553
561
|
hestia_earth/models/utils/cycle.py,sha256=W-VIReb1OVooV6EIj-P6gUlr-W17_6USdnnj4ihMTTc,16741
|
|
554
562
|
hestia_earth/models/utils/descriptive_stats.py,sha256=qOyG8_TpWYmaxZ0h99n9L71gDLLiVMrMf0ChtxnZLjw,8559
|
|
555
|
-
hestia_earth/models/utils/ecoClimateZone.py,sha256=
|
|
563
|
+
hestia_earth/models/utils/ecoClimateZone.py,sha256=A3ZtF_B2wr6v7clbVi0zWQ-bOXRoOKq4vGq8mhNf9Ec,4316
|
|
556
564
|
hestia_earth/models/utils/emission.py,sha256=5Dz8Z4P6QXbYSvOzVcqJy3R_oZMrp77_Iwj5xZsxsKc,3769
|
|
557
565
|
hestia_earth/models/utils/excretaManagement.py,sha256=NuWPQjFZxMVt9sYgBjcqhGWCFk_OKb3sA9Ovcff3fRQ,428
|
|
558
566
|
hestia_earth/models/utils/feedipedia.py,sha256=ImUAURcwJDtSvu1s4MDeM1VpbU8mVTp9jh9ENNOB0Mw,3515
|
|
@@ -569,8 +577,8 @@ hestia_earth/models/utils/organicFertiliser.py,sha256=2HY-a0EBzUw4DkEAXClLMXVCEZ
|
|
|
569
577
|
hestia_earth/models/utils/pesticideAI.py,sha256=6f8b-dFm3qr-eY049_eOvj_iDk4XBam61csozdDAvyA,2361
|
|
570
578
|
hestia_earth/models/utils/practice.py,sha256=tNadOzsrNlCEt801B815XaruJXzZ5yPASam7B3sWpXE,1091
|
|
571
579
|
hestia_earth/models/utils/product.py,sha256=DhDgiReR8k9n9aaRM2xk3PIY3nfoE1ISKg9pKsBVzVQ,10143
|
|
572
|
-
hestia_earth/models/utils/productivity.py,sha256=
|
|
573
|
-
hestia_earth/models/utils/property.py,sha256=
|
|
580
|
+
hestia_earth/models/utils/productivity.py,sha256=rTJX_nemxHpOcPN7jiM2hFHknoLUIW8y-hFxVxIkg70,593
|
|
581
|
+
hestia_earth/models/utils/property.py,sha256=gBy6FidNDhjzokOXOWcIDBMKcdPPBXxIZgdAxgQsmWc,5127
|
|
574
582
|
hestia_earth/models/utils/site.py,sha256=zEj2PtIghk-L_vVJidlXM6_ed7HTc2-ogP0sQSh49vw,3874
|
|
575
583
|
hestia_earth/models/utils/source.py,sha256=Y-CcO5Y3q5Hz4A4RdX35C1EUjL9w1NKnOrzVfOWQ7nU,1748
|
|
576
584
|
hestia_earth/models/utils/temperature.py,sha256=ljlG4-yCgFFb6LRZweb18cZKLrr7K2mqd4E4Hz_D1f8,476
|
|
@@ -640,10 +648,11 @@ tests/models/cycle/test_residueBurnt.py,sha256=eBAzGR1210cBYH_s6oI1yCG6tVKUj9gGs
|
|
|
640
648
|
tests/models/cycle/test_residueIncorporated.py,sha256=esB_wnpf6W0PB24HW0YUgtfD9mxLDIY22eNVD4WAYFA,1719
|
|
641
649
|
tests/models/cycle/test_residueLeftOnField.py,sha256=_8CoSp-7z3BBLGN5Hv067FRYz8yDFw5fi_Cu5n6Rl3g,1290
|
|
642
650
|
tests/models/cycle/test_residueRemoved.py,sha256=R5v8lwGyz_4a9_X_LnugBEmgVgcisS5LTM5GFCtKIco,1278
|
|
643
|
-
tests/models/cycle/test_siteDuration.py,sha256=
|
|
651
|
+
tests/models/cycle/test_siteDuration.py,sha256=x98shgDOAPp7Bf8j7R251qzn4oVZyqmtlmwcoG2nVwE,2358
|
|
644
652
|
tests/models/cycle/test_siteUnusedDuration.py,sha256=5h9R3guw6ErU_sE5omoiK9Fpke74SmQWsJYWYURE9Fo,1532
|
|
645
653
|
tests/models/cycle/test_startDate.py,sha256=-U1_XIx8v5zxK3oK5fCIIsS7GFKymNh3m0SgJ0J2iZ8,1223
|
|
646
654
|
tests/models/cycle/test_startDateDefinition.py,sha256=42BmsT1I7Jq_YMVN-VNU7a0fIZ2w3i5jgwy4H_r4dNM,920
|
|
655
|
+
tests/models/cycle/test_stockingDensityAnimalHousingAverage.py,sha256=Pj3rxJNXF0rmGjRomZOHV6ZVngypzbVIGwAHbVIOLFI,1286
|
|
647
656
|
tests/models/cycle/test_transformations.py,sha256=Ws_8KhNqeHogGFXTQ4qZXQ5Ph2I3ZUaY0yO1itFUHLk,464
|
|
648
657
|
tests/models/cycle/test_unknownPreSeasonWaterRegime.py,sha256=4JSSpDvBQEQrDoytNVzuIcm9UVio4TzZpZm52iMWBVA,1220
|
|
649
658
|
tests/models/cycle/animal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -794,9 +803,12 @@ tests/models/ipcc2013ExcludingFeedbacks/test_gwp100.py,sha256=Od9ALNCag5pCVJnp2p
|
|
|
794
803
|
tests/models/ipcc2013IncludingFeedbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
795
804
|
tests/models/ipcc2013IncludingFeedbacks/test_gwp100.py,sha256=4HydDKiZDpxtgqgjpAg4cTVQu-jM-_tdDdJFmNNrwSc,875
|
|
796
805
|
tests/models/ipcc2019/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
806
|
+
tests/models/ipcc2019/test_aboveGroundBiomass.py,sha256=Y9hSe_7XWDAmHcUKShoqp3nQZ67poHjvxLeDg3QruWY,5318
|
|
807
|
+
tests/models/ipcc2019/test_aboveGroundBiomass_utils.py,sha256=8Z9OXTIutB-_XeF3dCBjMW4bolEzreOE8QD8kahMcag,4182
|
|
797
808
|
tests/models/ipcc2019/test_aboveGroundCropResidueTotal.py,sha256=AADYB1g9vftH7YSvNyihHu8GQOiA7VhXxVQ-oJQNT88,2581
|
|
798
809
|
tests/models/ipcc2019/test_belowGroundCropResidue.py,sha256=HUxHZLBdLX_E_oc3wqTwNtGY4M4yCWcxx-1iBYPF7_s,2576
|
|
799
810
|
tests/models/ipcc2019/test_carbonContent.py,sha256=_GWF5nGy-PxiqBZ5V7W_sHMz75YRzmxr79R-sZZg7yk,4146
|
|
811
|
+
tests/models/ipcc2019/test_ch4ToAirAquacultureSystems.py,sha256=o7bHOS4JkwexRrDhLzpfr8nyYCctgRL32YZbam5RBrI,1891
|
|
800
812
|
tests/models/ipcc2019/test_ch4ToAirEntericFermentation.py,sha256=3Hv86L4X_Va2mZL4KI-36AV00z-KBbKo0cb2ABg6Rv8,7928
|
|
801
813
|
tests/models/ipcc2019/test_ch4ToAirExcreta.py,sha256=e58NXmBW2SNVLUqQO9A66Xq6jiGTyhdFZDZk51JApF8,2902
|
|
802
814
|
tests/models/ipcc2019/test_ch4ToAirFloodedRice.py,sha256=FAp5b45WdX5Ih4yGUOZ4CmVD8smW1Lw1tnulx9AKVBI,1980
|
|
@@ -823,12 +835,14 @@ tests/models/ipcc2019/test_no3ToGroundwaterOrganicFertiliser.py,sha256=e1ZViD12q
|
|
|
823
835
|
tests/models/ipcc2019/test_noxToAirInorganicFertiliser.py,sha256=NZBSBJLM_j2PEpHRON2ysgKNF8x5sHfQVoAKQdGsfzk,1537
|
|
824
836
|
tests/models/ipcc2019/test_noxToAirOrganicFertiliser.py,sha256=LR5pjV5vRbgSSQAw8kYRp_ij4CHInzgaDS6EggQuBiw,1104
|
|
825
837
|
tests/models/ipcc2019/test_organicCarbonPerHa.py,sha256=9i1xEv5QEc8C9e0c0iVGwLOWisZVYwwlnAsEVmMv5Lg,13245
|
|
826
|
-
tests/models/ipcc2019/test_organicCarbonPerHa_tier_1_utils.py,sha256=
|
|
838
|
+
tests/models/ipcc2019/test_organicCarbonPerHa_tier_1_utils.py,sha256=62z1uWd37ol42hGPMgspFsi76v1rpix17PkUMyh8hqQ,20751
|
|
827
839
|
tests/models/ipcc2019/test_organicCarbonPerHa_tier_2_utils.py,sha256=6YXLqH5wz_cvYlJjCacCv9UTYpnXYxURLKQz6N9ZMPg,6807
|
|
828
840
|
tests/models/ipcc2019/test_organicCarbonPerHa_utils.py,sha256=Zd2QlN_Q3k9djuByOH62A00tryVzlvNtsd46N79TTeU,1778
|
|
829
|
-
tests/models/ipcc2019/test_pastureGrass.py,sha256=
|
|
841
|
+
tests/models/ipcc2019/test_pastureGrass.py,sha256=mKx8NnTtMT9TrXxRNLv73wD1TWBaiRZzA1xh2ukb-HI,2667
|
|
830
842
|
tests/models/ipcc2019/animal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
831
|
-
tests/models/ipcc2019/animal/
|
|
843
|
+
tests/models/ipcc2019/animal/test_liveweightGain.py,sha256=XN1Ly_Jeg4zoRVQAVX2D0ORxmKjrcW163bI0wpLjUWs,663
|
|
844
|
+
tests/models/ipcc2019/animal/test_liveweightPerHead.py,sha256=oMzpf7crgkTXO3sF88i4XhJXVOqkCFgKbZruE9kCQTY,666
|
|
845
|
+
tests/models/ipcc2019/animal/test_pastureGrass.py,sha256=vuwd7WPUKIWaYREv_UmEa8m9llZSr0OclDsmnSDtHOQ,1987
|
|
832
846
|
tests/models/ipcc2019/animal/test_weightAtMaturity.py,sha256=Tss9bTVz66yXVEBZT31KMm6gd45B9E1DJLqwYArPuYY,665
|
|
833
847
|
tests/models/ipcc2021/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
834
848
|
tests/models/ipcc2021/test_gwp100.py,sha256=JRklKMSg-OXopb9ZufGgl94deuMuJSsfNXRZDBtOZrE,1119
|
|
@@ -966,6 +980,7 @@ tests/models/pooreNemecek2018/test_rotationDuration.py,sha256=tD2E91beAXdyT-xf5Q
|
|
|
966
980
|
tests/models/pooreNemecek2018/test_saplings.py,sha256=uJyUWUocvrcPndv-YFLs0WfxGEAG1kM8HEWZwutRhvs,1621
|
|
967
981
|
tests/models/poschEtAl2008/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
968
982
|
tests/models/poschEtAl2008/test_terrestrialAcidificationPotentialAccumulatedExceedance.py,sha256=NJ_W-ypWwjBuGiaXUeJvaQ9ZufoqlSWk1NYE9tt94ZA,1612
|
|
983
|
+
tests/models/poschEtAl2008/test_terrestrialEutrophicationPotentialAccumulatedExceedance.py,sha256=m-AUbdVDBEFEcmNOv13cYvNZQgDMYhHX33kfWywXQWM,1485
|
|
969
984
|
tests/models/recipe2016Egalitarian/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
970
985
|
tests/models/recipe2016Egalitarian/test_damageToFreshwaterEcosystemsSpeciesYear.py,sha256=OC8WjzPuyz5fd_E-LxFbOg3sasVc6LMJ9UK-jAKO7LU,697
|
|
971
986
|
tests/models/recipe2016Egalitarian/test_damageToHumanHealth.py,sha256=fWjzC9r6itihyW6AdmDkotbhML_0KavXernOpnK1SmY,677
|
|
@@ -1100,6 +1115,7 @@ tests/models/utils/test_cropResidueManagement.py,sha256=RQt8lexeJzCyxZceIutgDpw7
|
|
|
1100
1115
|
tests/models/utils/test_currency.py,sha256=BPsojPsY9QW2aj8vgbjkPQXU8GU6wDwwtPZ3HdC4KTU,277
|
|
1101
1116
|
tests/models/utils/test_dataCompleteness.py,sha256=mW6rA7ddhtjZsLxwo5xDnvBdxmqTsivy4RTIU-2Lvk0,1713
|
|
1102
1117
|
tests/models/utils/test_descriptive_stats.py,sha256=S-N4-JavFw8UQKju7QhvtimsAIe0TI4DjQT-0q_Y-Sk,3988
|
|
1118
|
+
tests/models/utils/test_ecoClimateZone.py,sha256=Pzy1wuCqkz4Ftms-6eCxdYg1sdOVu8bobTNVd-TUm3U,4280
|
|
1103
1119
|
tests/models/utils/test_emission.py,sha256=3KfhQGV5Vh_WXTPt6McvZ2dBp9TVM7eAUTLgRHkBOvU,2146
|
|
1104
1120
|
tests/models/utils/test_feedipedia.py,sha256=S7c1W4bJ5xWXPh42pPbl3R7lDX_iEeaEtFaPXgB7hgE,906
|
|
1105
1121
|
tests/models/utils/test_impact_assessment.py,sha256=qEm4Y5txWnkSJKP1puvwgKFXkv06c7vUKmwDyIJxkdc,1114
|
|
@@ -1116,8 +1132,8 @@ tests/models/utils/test_source.py,sha256=_Ol-OrJs2Tt9iZAZ_RY2qRuSbnE4yz5OuEGkDSb
|
|
|
1116
1132
|
tests/models/utils/test_term.py,sha256=M5Sa26v2gzQYbZ4H_fo7DspnaCx__-WtL-MULGapCWk,3509
|
|
1117
1133
|
tests/models/webbEtAl2012AndSintermannEtAl2012/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1118
1134
|
tests/models/webbEtAl2012AndSintermannEtAl2012/test_nh3ToAirOrganicFertiliser.py,sha256=qi2FNXS5Af2WDtm7nq_FsprH3BfCF0XxnE0XHmC4aIY,2244
|
|
1119
|
-
hestia_earth_models-0.64.
|
|
1120
|
-
hestia_earth_models-0.64.
|
|
1121
|
-
hestia_earth_models-0.64.
|
|
1122
|
-
hestia_earth_models-0.64.
|
|
1123
|
-
hestia_earth_models-0.64.
|
|
1135
|
+
hestia_earth_models-0.64.3.dist-info/LICENSE,sha256=AC7h7GAgCZGJK_Tzh6LUCrML9gQEfowWwecEw2w54QM,1154
|
|
1136
|
+
hestia_earth_models-0.64.3.dist-info/METADATA,sha256=oHbT7czZE9hSI1j9SqhXt2G2cy3LZgsY-whn_0Ybxpc,3343
|
|
1137
|
+
hestia_earth_models-0.64.3.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
|
1138
|
+
hestia_earth_models-0.64.3.dist-info/top_level.txt,sha256=1dqA9TqpOLTEgpqa-YBsmbCmmNU1y56AtfFGEceZ2A0,19
|
|
1139
|
+
hestia_earth_models-0.64.3.dist-info/RECORD,,
|
|
@@ -59,3 +59,25 @@ def test_run():
|
|
|
59
59
|
|
|
60
60
|
value = run(data)
|
|
61
61
|
assert float(value) == float(expected)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def test_run_temporary_crop():
|
|
65
|
+
with open(f"{fixtures_folder}/temporary-crop/cycle.jsonld", encoding='utf-8') as f:
|
|
66
|
+
data = json.load(f)
|
|
67
|
+
|
|
68
|
+
with open(f"{fixtures_folder}/result.txt", encoding='utf-8') as f:
|
|
69
|
+
expected = f.read().strip()
|
|
70
|
+
|
|
71
|
+
value = run(data)
|
|
72
|
+
assert float(value) == float(expected)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def test_run_permanent_crop():
|
|
76
|
+
with open(f"{fixtures_folder}/permanent-crop/cycle.jsonld", encoding='utf-8') as f:
|
|
77
|
+
data = json.load(f)
|
|
78
|
+
|
|
79
|
+
with open(f"{fixtures_folder}/result.txt", encoding='utf-8') as f:
|
|
80
|
+
expected = f.read().strip()
|
|
81
|
+
|
|
82
|
+
value = run(data)
|
|
83
|
+
assert float(value) == float(expected)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from unittest.mock import patch
|
|
2
|
+
import pytest
|
|
3
|
+
import json
|
|
4
|
+
from tests.utils import fixtures_path, fake_new_practice
|
|
5
|
+
|
|
6
|
+
from hestia_earth.models.cycle.stockingDensityAnimalHousingAverage import MODEL, TERM_ID, run, _should_run
|
|
7
|
+
|
|
8
|
+
class_path = f"hestia_earth.models.{MODEL}.{TERM_ID}"
|
|
9
|
+
fixtures_folder = f"{fixtures_path}/{MODEL}/{TERM_ID}"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@pytest.mark.parametrize(
|
|
13
|
+
'test_name,cycle,expected_should_run',
|
|
14
|
+
[
|
|
15
|
+
(
|
|
16
|
+
'no live animal => no run',
|
|
17
|
+
{'products': [{'term': {'termType': 'crop'}}]},
|
|
18
|
+
False
|
|
19
|
+
),
|
|
20
|
+
(
|
|
21
|
+
'with live animal => run',
|
|
22
|
+
{'products': [{'term': {'termType': 'liveAnimal'}}]},
|
|
23
|
+
True
|
|
24
|
+
),
|
|
25
|
+
]
|
|
26
|
+
)
|
|
27
|
+
@patch(f"{class_path}.get_lookup_value", return_value=10)
|
|
28
|
+
def test_should_run(mock_lookup, test_name, cycle, expected_should_run):
|
|
29
|
+
should_run, *args = _should_run(cycle)
|
|
30
|
+
assert should_run == expected_should_run, test_name
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@patch(f"{class_path}._new_practice", side_effect=fake_new_practice)
|
|
34
|
+
def test_run(*args):
|
|
35
|
+
with open(f"{fixtures_folder}/cycle.jsonld", encoding='utf-8') as f:
|
|
36
|
+
cycle = json.load(f)
|
|
37
|
+
|
|
38
|
+
with open(f"{fixtures_folder}/result.jsonld", encoding='utf-8') as f:
|
|
39
|
+
expected = json.load(f)
|
|
40
|
+
|
|
41
|
+
result = run(cycle)
|
|
42
|
+
assert result == expected
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from unittest.mock import patch
|
|
2
|
+
import json
|
|
3
|
+
from tests.utils import fixtures_path, fake_new_property
|
|
4
|
+
|
|
5
|
+
from hestia_earth.models.ipcc2019.animal.liveweightGain import MODEL, TERM_ID, run
|
|
6
|
+
|
|
7
|
+
class_path = f"hestia_earth.models.{MODEL}.animal.{TERM_ID}"
|
|
8
|
+
fixtures_folder = f"{fixtures_path}/{MODEL}/animal/{TERM_ID}"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@patch(f"{class_path}._new_property", side_effect=fake_new_property)
|
|
12
|
+
def test_run(*args):
|
|
13
|
+
with open(f"{fixtures_folder}/cycle.jsonld", encoding='utf-8') as f:
|
|
14
|
+
cycle = json.load(f)
|
|
15
|
+
|
|
16
|
+
with open(f"{fixtures_folder}/result.jsonld", encoding='utf-8') as f:
|
|
17
|
+
expected = json.load(f)
|
|
18
|
+
|
|
19
|
+
value = run(cycle)
|
|
20
|
+
assert value == expected
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from unittest.mock import patch
|
|
2
|
+
import json
|
|
3
|
+
from tests.utils import fixtures_path, fake_new_property
|
|
4
|
+
|
|
5
|
+
from hestia_earth.models.ipcc2019.animal.liveweightPerHead import MODEL, TERM_ID, run
|
|
6
|
+
|
|
7
|
+
class_path = f"hestia_earth.models.{MODEL}.animal.{TERM_ID}"
|
|
8
|
+
fixtures_folder = f"{fixtures_path}/{MODEL}/animal/{TERM_ID}"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@patch(f"{class_path}._new_property", side_effect=fake_new_property)
|
|
12
|
+
def test_run(*args):
|
|
13
|
+
with open(f"{fixtures_folder}/cycle.jsonld", encoding='utf-8') as f:
|
|
14
|
+
cycle = json.load(f)
|
|
15
|
+
|
|
16
|
+
with open(f"{fixtures_folder}/result.jsonld", encoding='utf-8') as f:
|
|
17
|
+
expected = json.load(f)
|
|
18
|
+
|
|
19
|
+
value = run(cycle)
|
|
20
|
+
assert value == expected
|
|
@@ -10,7 +10,7 @@ class_path_utils = f"hestia_earth.models.{MODEL}.pastureGrass_utils"
|
|
|
10
10
|
fixtures_folder = f"{fixtures_path}/{MODEL}/animal/{MODEL_KEY}"
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
def fake_download_hestia(term_id: str, *args): return TERMS_BY_ID
|
|
13
|
+
def fake_download_hestia(term_id: str, *args): return TERMS_BY_ID.get(term_id, {})
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
@patch(f"{class_path_utils}.download_hestia", side_effect=fake_download_hestia)
|