hestia-earth-models 0.64.2__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 +8 -8
- 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/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 +223 -223
- 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.2.dist-info → hestia_earth_models-0.64.3.dist-info}/METADATA +1 -1
- {hestia_earth_models-0.64.2.dist-info → hestia_earth_models-0.64.3.dist-info}/RECORD +45 -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_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.2.dist-info → hestia_earth_models-0.64.3.dist-info}/LICENSE +0 -0
- {hestia_earth_models-0.64.2.dist-info → hestia_earth_models-0.64.3.dist-info}/WHEEL +0 -0
- {hestia_earth_models-0.64.2.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,12 +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
|
|
235
238
|
hestia_earth/models/ipcc2019/ch4ToAirAquacultureSystems.py,sha256=q6yyEiYQhHJ2VyQy2Fa84cuTl1D8bjBXOK3UpaRuo20,3196
|
|
236
239
|
hestia_earth/models/ipcc2019/ch4ToAirEntericFermentation.py,sha256=khX90NjkmlvosyRZ77QxgwTKwg42Z_ftOWTTAanHViw,11420
|
|
237
|
-
hestia_earth/models/ipcc2019/ch4ToAirExcreta.py,sha256=
|
|
240
|
+
hestia_earth/models/ipcc2019/ch4ToAirExcreta.py,sha256=eY_yb7ncTb_2HoUUgXZnnRHiybTXYj_DTe3CmDzD3fY,6717
|
|
238
241
|
hestia_earth/models/ipcc2019/ch4ToAirFloodedRice.py,sha256=TJ4J7VA5n4RPrJYZQeR3lc3ZoCw7T1E5Cb1XJewr834,7331
|
|
239
242
|
hestia_earth/models/ipcc2019/co2ToAirLimeHydrolysis.py,sha256=7z0zdqiiWQwkyJCgSNMoK2mft3cJkTRlqwKrMuSKdWI,2454
|
|
240
243
|
hestia_earth/models/ipcc2019/co2ToAirSoilOrganicCarbonStockChangeManagementChange.py,sha256=D-4h4a8Ob_radqS6Gj3K8eLqTeXJrFIbfO9viusd6Pc,27585
|
|
@@ -259,15 +262,18 @@ hestia_earth/models/ipcc2019/no3ToGroundwaterOrganicFertiliser.py,sha256=px2SN-u
|
|
|
259
262
|
hestia_earth/models/ipcc2019/noxToAirInorganicFertiliser.py,sha256=fmmFgjtvOD2TrrLY03jYly_KvDnCsAXqhL_tmZQQt-A,4480
|
|
260
263
|
hestia_earth/models/ipcc2019/noxToAirOrganicFertiliser.py,sha256=9dx_MRTwJGxJRq6mj2EJQMdQ2w6j7lw0fQk0If_cIGc,4152
|
|
261
264
|
hestia_earth/models/ipcc2019/organicCarbonPerHa.py,sha256=iRUSVxMpBGgsVDkuBABPKI4Khr5jIpAwuBe66c1PeV0,8658
|
|
262
|
-
hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1_utils.py,sha256=
|
|
265
|
+
hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1_utils.py,sha256=d112vbcbKHHoy0q3ncaI3d9dsAPydSEaWbXWupJe1-c,81908
|
|
263
266
|
hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_2_utils.py,sha256=A84r6u45HFk5jEb2nTWGTFTwX1qjq8F6qwkNUuiyH48,63542
|
|
264
|
-
hestia_earth/models/ipcc2019/organicCarbonPerHa_utils.py,sha256=
|
|
265
|
-
hestia_earth/models/ipcc2019/pastureGrass.py,sha256=
|
|
266
|
-
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
|
|
267
270
|
hestia_earth/models/ipcc2019/utils.py,sha256=MSDMu15D9DnilFUgi4_6jYXC0FaKso3OODauGTMB6hs,6229
|
|
268
271
|
hestia_earth/models/ipcc2019/animal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
269
|
-
hestia_earth/models/ipcc2019/animal/
|
|
270
|
-
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
|
|
271
277
|
hestia_earth/models/ipcc2021/__init__.py,sha256=VTgGFKhwMmk_nuI1RRq0in27fHYVPBonlXlPK00K8no,409
|
|
272
278
|
hestia_earth/models/ipcc2021/gwp100.py,sha256=v-DYU-11XnWI1Ns1GEiKrJqL3JafxvhTsLmuBuFcxJU,1021
|
|
273
279
|
hestia_earth/models/jarvisAndPain1994/__init__.py,sha256=ercUwy29sV7oPIESj8UjsGB5lqiBCss9OZcbjxeeG8E,418
|
|
@@ -380,7 +386,7 @@ hestia_earth/models/linkedImpactAssessment/landTransformationFromPermanentPastur
|
|
|
380
386
|
hestia_earth/models/linkedImpactAssessment/utils.py,sha256=dGwGc2d-8_WQElTpfyPmz5vQtL-LHQRmiZnCTuPXMDs,1876
|
|
381
387
|
hestia_earth/models/mocking/__init__.py,sha256=n3Fkkrvh8zHNWiJZmnfQ7WZ91JRzAO9P6pSG1JpwtXo,687
|
|
382
388
|
hestia_earth/models/mocking/mock_search.py,sha256=qgABw-sZK37XtsALKt8AHF2VJPUrZSnHv5Qj1Dn93oA,2405
|
|
383
|
-
hestia_earth/models/mocking/search-results.json,sha256=
|
|
389
|
+
hestia_earth/models/mocking/search-results.json,sha256=MG2gaJm0DPR-7nRYr3IN5_cRvNcquom-gY02_5hMP5k,53136
|
|
384
390
|
hestia_earth/models/pooreNemecek2018/__init__.py,sha256=nPboL7ULJzL5nJD5q7q9VOZt_fxbKVm8fmn1Az5YkVY,417
|
|
385
391
|
hestia_earth/models/pooreNemecek2018/aboveGroundCropResidueTotal.py,sha256=Qt-mel4dkhK6N5uUOutNOinCTFjbjtGzITaaI0LvYc4,2396
|
|
386
392
|
hestia_earth/models/pooreNemecek2018/belowGroundCropResidue.py,sha256=JT0RybbvWVlo01FO8K0Yj41HrEaJT3Kj1xfayr2X-xw,2315
|
|
@@ -409,6 +415,7 @@ hestia_earth/models/pooreNemecek2018/saplings.py,sha256=LS0zepV51-LlVmPBAjj5nlfg
|
|
|
409
415
|
hestia_earth/models/pooreNemecek2018/utils.py,sha256=to2vtONKCbuG1gVSDvsUcG7EnlahELfG_57gzIAHlv0,1710
|
|
410
416
|
hestia_earth/models/poschEtAl2008/__init__.py,sha256=nvyyGglxCTV4PpxcOjY7jJb0v8Bjzj435Zt1j6VcryM,414
|
|
411
417
|
hestia_earth/models/poschEtAl2008/terrestrialAcidificationPotentialAccumulatedExceedance.py,sha256=gbD8fgvdHANXsuPPWRx4Flcqhk3fPD5ROrrb2LMgmS8,1279
|
|
418
|
+
hestia_earth/models/poschEtAl2008/terrestrialEutrophicationPotentialAccumulatedExceedance.py,sha256=X1CixghiqYiE1N-sWhXuFcy9nxCA2RdBiClFAgUWTgw,1281
|
|
412
419
|
hestia_earth/models/recipe2016Egalitarian/__init__.py,sha256=OvZoSgfaMe6DWIdqr-Sx3ouzXlp994oro7Mi0Xid18Q,422
|
|
413
420
|
hestia_earth/models/recipe2016Egalitarian/damageToFreshwaterEcosystemsSpeciesYear.py,sha256=b1UZAsy3yGlHYxH2YhBhhSnjm5zzQl8Z32DcQBjgWNE,1123
|
|
414
421
|
hestia_earth/models/recipe2016Egalitarian/damageToHumanHealth.py,sha256=dJ8WinGe52wFQCMKtT_B7c1MFM_GbBo8aqfw0n2pw94,1087
|
|
@@ -544,16 +551,16 @@ hestia_earth/models/utils/aggregated.py,sha256=sz6usleZmo_tC_hIvmGgYsX8-H0dulXmm
|
|
|
544
551
|
hestia_earth/models/utils/animalProduct.py,sha256=M5IunAKGY6oZv3j1Ascl34ywyeLWApqOIlBzbtlA2FE,721
|
|
545
552
|
hestia_earth/models/utils/aquacultureManagement.py,sha256=dxrbC1Xf140cohxTbSw6TxLAnAASWTdNZwBBam4yQnw,171
|
|
546
553
|
hestia_earth/models/utils/array_builders.py,sha256=0_Ik0gKoh1QBijyb-55odh8_dIs-CWQ3lgUN1Hnc4Y8,18749
|
|
547
|
-
hestia_earth/models/utils/blank_node.py,sha256=
|
|
554
|
+
hestia_earth/models/utils/blank_node.py,sha256=YlHyxirCIt7PGEBJoal7cOXzegWbX9X3cpknKEznlQc,45238
|
|
548
555
|
hestia_earth/models/utils/completeness.py,sha256=2-GusD9UycobDZq8y5jar0ZcOjyqnSbzPRT_5XMc4YA,1259
|
|
549
556
|
hestia_earth/models/utils/constant.py,sha256=7wn5LBdsqlLdCrPaVASYjsxNtbaOSdqVWKedOFgyzfY,3249
|
|
550
|
-
hestia_earth/models/utils/crop.py,sha256=
|
|
557
|
+
hestia_earth/models/utils/crop.py,sha256=5KigEHd15nT8O9_1woxKJF5rEWiSkIkJqDAXet8BB9g,2383
|
|
551
558
|
hestia_earth/models/utils/cropResidue.py,sha256=_0Q35CrliJeo31xGHsPWe8A2oHxijdIsOrf3gBEqhlA,612
|
|
552
559
|
hestia_earth/models/utils/cropResidueManagement.py,sha256=nIDFjf39rDD10UHSVudfDyu-EiL261g8jyrgS-2aDKw,347
|
|
553
560
|
hestia_earth/models/utils/currency.py,sha256=f_ArJANb--pZq4LL49SXQ1AMX_oKroqwBXKRRQqZwsM,578
|
|
554
561
|
hestia_earth/models/utils/cycle.py,sha256=W-VIReb1OVooV6EIj-P6gUlr-W17_6USdnnj4ihMTTc,16741
|
|
555
562
|
hestia_earth/models/utils/descriptive_stats.py,sha256=qOyG8_TpWYmaxZ0h99n9L71gDLLiVMrMf0ChtxnZLjw,8559
|
|
556
|
-
hestia_earth/models/utils/ecoClimateZone.py,sha256=
|
|
563
|
+
hestia_earth/models/utils/ecoClimateZone.py,sha256=A3ZtF_B2wr6v7clbVi0zWQ-bOXRoOKq4vGq8mhNf9Ec,4316
|
|
557
564
|
hestia_earth/models/utils/emission.py,sha256=5Dz8Z4P6QXbYSvOzVcqJy3R_oZMrp77_Iwj5xZsxsKc,3769
|
|
558
565
|
hestia_earth/models/utils/excretaManagement.py,sha256=NuWPQjFZxMVt9sYgBjcqhGWCFk_OKb3sA9Ovcff3fRQ,428
|
|
559
566
|
hestia_earth/models/utils/feedipedia.py,sha256=ImUAURcwJDtSvu1s4MDeM1VpbU8mVTp9jh9ENNOB0Mw,3515
|
|
@@ -570,8 +577,8 @@ hestia_earth/models/utils/organicFertiliser.py,sha256=2HY-a0EBzUw4DkEAXClLMXVCEZ
|
|
|
570
577
|
hestia_earth/models/utils/pesticideAI.py,sha256=6f8b-dFm3qr-eY049_eOvj_iDk4XBam61csozdDAvyA,2361
|
|
571
578
|
hestia_earth/models/utils/practice.py,sha256=tNadOzsrNlCEt801B815XaruJXzZ5yPASam7B3sWpXE,1091
|
|
572
579
|
hestia_earth/models/utils/product.py,sha256=DhDgiReR8k9n9aaRM2xk3PIY3nfoE1ISKg9pKsBVzVQ,10143
|
|
573
|
-
hestia_earth/models/utils/productivity.py,sha256=
|
|
574
|
-
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
|
|
575
582
|
hestia_earth/models/utils/site.py,sha256=zEj2PtIghk-L_vVJidlXM6_ed7HTc2-ogP0sQSh49vw,3874
|
|
576
583
|
hestia_earth/models/utils/source.py,sha256=Y-CcO5Y3q5Hz4A4RdX35C1EUjL9w1NKnOrzVfOWQ7nU,1748
|
|
577
584
|
hestia_earth/models/utils/temperature.py,sha256=ljlG4-yCgFFb6LRZweb18cZKLrr7K2mqd4E4Hz_D1f8,476
|
|
@@ -641,10 +648,11 @@ tests/models/cycle/test_residueBurnt.py,sha256=eBAzGR1210cBYH_s6oI1yCG6tVKUj9gGs
|
|
|
641
648
|
tests/models/cycle/test_residueIncorporated.py,sha256=esB_wnpf6W0PB24HW0YUgtfD9mxLDIY22eNVD4WAYFA,1719
|
|
642
649
|
tests/models/cycle/test_residueLeftOnField.py,sha256=_8CoSp-7z3BBLGN5Hv067FRYz8yDFw5fi_Cu5n6Rl3g,1290
|
|
643
650
|
tests/models/cycle/test_residueRemoved.py,sha256=R5v8lwGyz_4a9_X_LnugBEmgVgcisS5LTM5GFCtKIco,1278
|
|
644
|
-
tests/models/cycle/test_siteDuration.py,sha256=
|
|
651
|
+
tests/models/cycle/test_siteDuration.py,sha256=x98shgDOAPp7Bf8j7R251qzn4oVZyqmtlmwcoG2nVwE,2358
|
|
645
652
|
tests/models/cycle/test_siteUnusedDuration.py,sha256=5h9R3guw6ErU_sE5omoiK9Fpke74SmQWsJYWYURE9Fo,1532
|
|
646
653
|
tests/models/cycle/test_startDate.py,sha256=-U1_XIx8v5zxK3oK5fCIIsS7GFKymNh3m0SgJ0J2iZ8,1223
|
|
647
654
|
tests/models/cycle/test_startDateDefinition.py,sha256=42BmsT1I7Jq_YMVN-VNU7a0fIZ2w3i5jgwy4H_r4dNM,920
|
|
655
|
+
tests/models/cycle/test_stockingDensityAnimalHousingAverage.py,sha256=Pj3rxJNXF0rmGjRomZOHV6ZVngypzbVIGwAHbVIOLFI,1286
|
|
648
656
|
tests/models/cycle/test_transformations.py,sha256=Ws_8KhNqeHogGFXTQ4qZXQ5Ph2I3ZUaY0yO1itFUHLk,464
|
|
649
657
|
tests/models/cycle/test_unknownPreSeasonWaterRegime.py,sha256=4JSSpDvBQEQrDoytNVzuIcm9UVio4TzZpZm52iMWBVA,1220
|
|
650
658
|
tests/models/cycle/animal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -795,6 +803,8 @@ tests/models/ipcc2013ExcludingFeedbacks/test_gwp100.py,sha256=Od9ALNCag5pCVJnp2p
|
|
|
795
803
|
tests/models/ipcc2013IncludingFeedbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
796
804
|
tests/models/ipcc2013IncludingFeedbacks/test_gwp100.py,sha256=4HydDKiZDpxtgqgjpAg4cTVQu-jM-_tdDdJFmNNrwSc,875
|
|
797
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
|
|
798
808
|
tests/models/ipcc2019/test_aboveGroundCropResidueTotal.py,sha256=AADYB1g9vftH7YSvNyihHu8GQOiA7VhXxVQ-oJQNT88,2581
|
|
799
809
|
tests/models/ipcc2019/test_belowGroundCropResidue.py,sha256=HUxHZLBdLX_E_oc3wqTwNtGY4M4yCWcxx-1iBYPF7_s,2576
|
|
800
810
|
tests/models/ipcc2019/test_carbonContent.py,sha256=_GWF5nGy-PxiqBZ5V7W_sHMz75YRzmxr79R-sZZg7yk,4146
|
|
@@ -825,12 +835,14 @@ tests/models/ipcc2019/test_no3ToGroundwaterOrganicFertiliser.py,sha256=e1ZViD12q
|
|
|
825
835
|
tests/models/ipcc2019/test_noxToAirInorganicFertiliser.py,sha256=NZBSBJLM_j2PEpHRON2ysgKNF8x5sHfQVoAKQdGsfzk,1537
|
|
826
836
|
tests/models/ipcc2019/test_noxToAirOrganicFertiliser.py,sha256=LR5pjV5vRbgSSQAw8kYRp_ij4CHInzgaDS6EggQuBiw,1104
|
|
827
837
|
tests/models/ipcc2019/test_organicCarbonPerHa.py,sha256=9i1xEv5QEc8C9e0c0iVGwLOWisZVYwwlnAsEVmMv5Lg,13245
|
|
828
|
-
tests/models/ipcc2019/test_organicCarbonPerHa_tier_1_utils.py,sha256=
|
|
838
|
+
tests/models/ipcc2019/test_organicCarbonPerHa_tier_1_utils.py,sha256=62z1uWd37ol42hGPMgspFsi76v1rpix17PkUMyh8hqQ,20751
|
|
829
839
|
tests/models/ipcc2019/test_organicCarbonPerHa_tier_2_utils.py,sha256=6YXLqH5wz_cvYlJjCacCv9UTYpnXYxURLKQz6N9ZMPg,6807
|
|
830
840
|
tests/models/ipcc2019/test_organicCarbonPerHa_utils.py,sha256=Zd2QlN_Q3k9djuByOH62A00tryVzlvNtsd46N79TTeU,1778
|
|
831
|
-
tests/models/ipcc2019/test_pastureGrass.py,sha256=
|
|
841
|
+
tests/models/ipcc2019/test_pastureGrass.py,sha256=mKx8NnTtMT9TrXxRNLv73wD1TWBaiRZzA1xh2ukb-HI,2667
|
|
832
842
|
tests/models/ipcc2019/animal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
833
|
-
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
|
|
834
846
|
tests/models/ipcc2019/animal/test_weightAtMaturity.py,sha256=Tss9bTVz66yXVEBZT31KMm6gd45B9E1DJLqwYArPuYY,665
|
|
835
847
|
tests/models/ipcc2021/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
836
848
|
tests/models/ipcc2021/test_gwp100.py,sha256=JRklKMSg-OXopb9ZufGgl94deuMuJSsfNXRZDBtOZrE,1119
|
|
@@ -968,6 +980,7 @@ tests/models/pooreNemecek2018/test_rotationDuration.py,sha256=tD2E91beAXdyT-xf5Q
|
|
|
968
980
|
tests/models/pooreNemecek2018/test_saplings.py,sha256=uJyUWUocvrcPndv-YFLs0WfxGEAG1kM8HEWZwutRhvs,1621
|
|
969
981
|
tests/models/poschEtAl2008/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
970
982
|
tests/models/poschEtAl2008/test_terrestrialAcidificationPotentialAccumulatedExceedance.py,sha256=NJ_W-ypWwjBuGiaXUeJvaQ9ZufoqlSWk1NYE9tt94ZA,1612
|
|
983
|
+
tests/models/poschEtAl2008/test_terrestrialEutrophicationPotentialAccumulatedExceedance.py,sha256=m-AUbdVDBEFEcmNOv13cYvNZQgDMYhHX33kfWywXQWM,1485
|
|
971
984
|
tests/models/recipe2016Egalitarian/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
972
985
|
tests/models/recipe2016Egalitarian/test_damageToFreshwaterEcosystemsSpeciesYear.py,sha256=OC8WjzPuyz5fd_E-LxFbOg3sasVc6LMJ9UK-jAKO7LU,697
|
|
973
986
|
tests/models/recipe2016Egalitarian/test_damageToHumanHealth.py,sha256=fWjzC9r6itihyW6AdmDkotbhML_0KavXernOpnK1SmY,677
|
|
@@ -1102,6 +1115,7 @@ tests/models/utils/test_cropResidueManagement.py,sha256=RQt8lexeJzCyxZceIutgDpw7
|
|
|
1102
1115
|
tests/models/utils/test_currency.py,sha256=BPsojPsY9QW2aj8vgbjkPQXU8GU6wDwwtPZ3HdC4KTU,277
|
|
1103
1116
|
tests/models/utils/test_dataCompleteness.py,sha256=mW6rA7ddhtjZsLxwo5xDnvBdxmqTsivy4RTIU-2Lvk0,1713
|
|
1104
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
|
|
1105
1119
|
tests/models/utils/test_emission.py,sha256=3KfhQGV5Vh_WXTPt6McvZ2dBp9TVM7eAUTLgRHkBOvU,2146
|
|
1106
1120
|
tests/models/utils/test_feedipedia.py,sha256=S7c1W4bJ5xWXPh42pPbl3R7lDX_iEeaEtFaPXgB7hgE,906
|
|
1107
1121
|
tests/models/utils/test_impact_assessment.py,sha256=qEm4Y5txWnkSJKP1puvwgKFXkv06c7vUKmwDyIJxkdc,1114
|
|
@@ -1118,8 +1132,8 @@ tests/models/utils/test_source.py,sha256=_Ol-OrJs2Tt9iZAZ_RY2qRuSbnE4yz5OuEGkDSb
|
|
|
1118
1132
|
tests/models/utils/test_term.py,sha256=M5Sa26v2gzQYbZ4H_fo7DspnaCx__-WtL-MULGapCWk,3509
|
|
1119
1133
|
tests/models/webbEtAl2012AndSintermannEtAl2012/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1120
1134
|
tests/models/webbEtAl2012AndSintermannEtAl2012/test_nh3ToAirOrganicFertiliser.py,sha256=qi2FNXS5Af2WDtm7nq_FsprH3BfCF0XxnE0XHmC4aIY,2244
|
|
1121
|
-
hestia_earth_models-0.64.
|
|
1122
|
-
hestia_earth_models-0.64.
|
|
1123
|
-
hestia_earth_models-0.64.
|
|
1124
|
-
hestia_earth_models-0.64.
|
|
1125
|
-
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)
|