hestia-earth-utils 0.15.14__py3-none-any.whl → 0.15.15__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.
@@ -9,7 +9,11 @@ from .lookup_utils import (
9
9
  is_product_termType_allowed,
10
10
  is_product_id_allowed,
11
11
  is_input_termType_allowed,
12
- is_input_id_allowed
12
+ is_input_id_allowed,
13
+ is_practice_termType_allowed,
14
+ is_practice_id_allowed,
15
+ is_transformation_termType_allowed,
16
+ is_transformation_id_allowed,
13
17
  )
14
18
 
15
19
 
@@ -35,7 +39,11 @@ def cycle_emission_is_in_system_boundary(cycle: dict):
35
39
  is_product_termType_allowed,
36
40
  is_product_id_allowed,
37
41
  is_input_termType_allowed,
38
- is_input_id_allowed
42
+ is_input_id_allowed,
43
+ is_practice_termType_allowed,
44
+ is_practice_id_allowed,
45
+ is_transformation_termType_allowed,
46
+ is_transformation_id_allowed,
39
47
  ]))
40
48
 
41
49
  return filter_term
@@ -1,5 +1,6 @@
1
1
  from functools import lru_cache
2
2
  import json
3
+ from hestia_earth.schema import SchemaType
3
4
 
4
5
  from .lookup import _download_lookup_data, download_lookup, get_table_value, column_name
5
6
  from .api import download_hestia
@@ -35,6 +36,10 @@ def _get_site_measurements(node: dict):
35
36
  return flatten([non_empty_list(site.get('measurements', [])) for site in sites])
36
37
 
37
38
 
39
+ def _blank_node_term_values(blank_nodes: list, key: str = '@id'):
40
+ return non_empty_list([v.get('term', {}).get(key) for v in blank_nodes])
41
+
42
+
38
43
  @lru_cache()
39
44
  def _allowed_model_mapping(model: str, term_id: str, column: str):
40
45
  mapping = _allowed_mapping_data()
@@ -45,22 +50,23 @@ def _allowed_model_mapping(model: str, term_id: str, column: str):
45
50
  return (value or _ALLOW_ALL).split(';') if isinstance(value, str) else _ALLOW_ALL
46
51
 
47
52
 
53
+ def _is_model_value_allowed(model: str, term_id: str, values: list, lookup_column: str):
54
+ allowed_values = _allowed_model_mapping(model, term_id, lookup_column)
55
+ return any([
56
+ _ALLOW_ALL in allowed_values,
57
+ len(values) == 0
58
+ ]) or any([value in allowed_values for value in values])
59
+
60
+
48
61
  def is_model_siteType_allowed(model: str, term_id: str, data: dict):
49
- site_types = _get_site_types(data)
50
- allowed_values = _allowed_model_mapping(model, term_id, 'siteTypesAllowed')
51
- return True if _ALLOW_ALL in allowed_values or not site_types else any([
52
- (site_type in allowed_values) for site_type in site_types
53
- ])
62
+ values = _get_site_types(data)
63
+ return _is_model_value_allowed(model, term_id, values, 'siteTypesAllowed')
54
64
 
55
65
 
56
66
  def is_model_product_id_allowed(model: str, term_id: str, data: dict):
57
67
  products = data.get('products', [])
58
- values = non_empty_list([p.get('term', {}).get('@id') for p in products])
59
- allowed_values = _allowed_model_mapping(model, term_id, 'productTermIdsAllowed')
60
- return True if any([
61
- _ALLOW_ALL in allowed_values,
62
- len(values) == 0
63
- ]) else any([value in allowed_values for value in values])
68
+ values = _blank_node_term_values(products)
69
+ return _is_model_value_allowed(model, term_id, values, 'productTermIdsAllowed')
64
70
 
65
71
 
66
72
  @lru_cache()
@@ -73,68 +79,76 @@ def _allowed_mapping(term_id: str, column: str):
73
79
  return (value or _ALLOW_ALL).split(';') if isinstance(value, str) else _ALLOW_ALL
74
80
 
75
81
 
82
+ def _is_term_value_allowed(term_id: str, values: list, lookup_column: str):
83
+ allowed_values = _allowed_mapping(term_id, lookup_column)
84
+ return any([
85
+ _ALLOW_ALL in allowed_values,
86
+ len(values) == 0
87
+ ]) or any([value in allowed_values for value in values])
88
+
89
+
76
90
  def is_siteType_allowed(data: dict, term_id: str):
77
- site_types = _get_site_types(data)
78
- allowed_values = _allowed_mapping(term_id, 'siteTypesAllowed')
79
- return True if _ALLOW_ALL in allowed_values or not site_types else any([
80
- (site_type in allowed_values) for site_type in site_types
81
- ])
91
+ values = _get_site_types(data)
92
+ return _is_term_value_allowed(term_id, values, 'siteTypesAllowed')
82
93
 
83
94
 
84
95
  def is_site_measurement_id_allowed(data: dict, term_id: str):
85
96
  measurements = _get_site_measurements(data)
86
- values = non_empty_list([v.get('term', {}).get('@id') for v in measurements])
87
- allowed_values = _allowed_mapping(term_id, 'siteMeasurementIdsAllowed')
88
- return True if any([
89
- _ALLOW_ALL in allowed_values,
90
- len(values) == 0
91
- ]) else any([value in allowed_values for value in values])
97
+ values = _blank_node_term_values(measurements, key='@id')
98
+ return _is_term_value_allowed(term_id, values, 'siteMeasurementIdsAllowed')
92
99
 
93
100
 
94
101
  def is_product_termType_allowed(data: dict, term_id: str):
95
102
  products = data.get('products', [])
96
- values = non_empty_list([p.get('term', {}).get('termType') for p in products])
97
- allowed_values = _allowed_mapping(term_id, 'productTermTypesAllowed')
98
- return True if any([
99
- _ALLOW_ALL in allowed_values,
100
- len(values) == 0
101
- ]) else any([value in allowed_values for value in values])
103
+ values = _blank_node_term_values(products, key='termType')
104
+ return _is_term_value_allowed(term_id, values, 'productTermTypesAllowed')
102
105
 
103
106
 
104
107
  def is_product_id_allowed(data: dict, term_id: str):
105
108
  products = data.get('products', [])
106
- values = non_empty_list([p.get('term', {}).get('@id') for p in products])
107
- allowed_values = _allowed_mapping(term_id, 'productTermIdsAllowed')
108
- return True if any([
109
- _ALLOW_ALL in allowed_values,
110
- len(values) == 0
111
- ]) else any([value in allowed_values for value in values])
109
+ values = _blank_node_term_values(products, key='@id')
110
+ return _is_term_value_allowed(term_id, values, 'productTermIdsAllowed')
112
111
 
113
112
 
114
113
  def is_input_termType_allowed(data: dict, term_id: str):
115
114
  inputs = data.get('inputs', [])
116
- values = non_empty_list([p.get('term', {}).get('termType') for p in inputs])
117
- allowed_values = _allowed_mapping(term_id, 'inputTermTypesAllowed')
118
- return True if any([
119
- _ALLOW_ALL in allowed_values,
120
- len(values) == 0
121
- ]) else any([value in allowed_values for value in values])
115
+ values = _blank_node_term_values(inputs, key='termType')
116
+ return _is_term_value_allowed(term_id, values, 'inputTermTypesAllowed')
122
117
 
123
118
 
124
119
  def is_input_id_allowed(data: dict, term_id: str):
125
120
  inputs = data.get('inputs', [])
126
- values = non_empty_list([p.get('term', {}).get('@id') for p in inputs])
127
- allowed_values = _allowed_mapping(term_id, 'inputTermIdsAllowed')
128
- return True if any([
129
- _ALLOW_ALL in allowed_values,
130
- len(values) == 0
131
- ]) else any([value in allowed_values for value in values])
121
+ values = _blank_node_term_values(inputs, key='@id')
122
+ return _is_term_value_allowed(term_id, values, 'inputTermIdsAllowed')
123
+
124
+
125
+ def is_practice_termType_allowed(data: dict, term_id: str):
126
+ practices = data.get('practices', [])
127
+ values = _blank_node_term_values(practices, key='termType')
128
+ return _is_term_value_allowed(term_id, values, 'practiceTermTypesAllowed')
129
+
130
+
131
+ def is_practice_id_allowed(data: dict, term_id: str):
132
+ practices = data.get('practices', [])
133
+ values = _blank_node_term_values(practices, key='@id')
134
+ return _is_term_value_allowed(term_id, values, 'practiceTermIdsAllowed')
135
+
136
+
137
+ def is_transformation_termType_allowed(data: dict, term_id: str):
138
+ is_transformation = data.get('@type', data.get('type')) == SchemaType.TRANSFORMATION.value
139
+ values = non_empty_list([data.get('term', {}).get('termType')])
140
+ return not is_transformation or _is_term_value_allowed(term_id, values, 'transformationTermTypesAllowed')
141
+
142
+
143
+ def is_transformation_id_allowed(data: dict, term_id: str):
144
+ is_transformation = data.get('@type', data.get('type')) == SchemaType.TRANSFORMATION.value
145
+ values = non_empty_list([data.get('term', {}).get('@id')])
146
+ return not is_transformation or _is_term_value_allowed(term_id, values, 'transformationTermIdsAllowed')
132
147
 
133
148
 
134
149
  def is_node_type_allowed(data: dict, term_id: str):
135
- node_type = data.get('@type', data.get('type'))
136
- allowed_types = _allowed_mapping(term_id, 'typesAllowed')
137
- return True if _ALLOW_ALL in allowed_types or not node_type else node_type in allowed_types
150
+ values = non_empty_list([data.get('@type', data.get('type'))])
151
+ return _is_term_value_allowed(term_id, values, 'typesAllowed')
138
152
 
139
153
 
140
154
  @lru_cache()
@@ -1 +1 @@
1
- VERSION = '0.15.14'
1
+ VERSION = '0.15.15'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hestia-earth-utils
3
- Version: 0.15.14
3
+ Version: 0.15.15
4
4
  Summary: HESTIA's utils library
5
5
  Home-page: https://gitlab.com/hestia-earth/hestia-utils
6
6
  Author: HESTIA Team
@@ -6,9 +6,9 @@ hestia_earth/utils/calculation_status.py,sha256=X7lbgVMD9luH1gj9lEcxd3_P2-u7e8ZP
6
6
  hestia_earth/utils/cycle.py,sha256=rFLRL9X4KQ1UrE6fEPA_gV8KmwzrZpR3Ce56zg41lRk,1326
7
7
  hestia_earth/utils/date.py,sha256=SPQ69uxHiv1o3BqIkBKkM5XX_CmS20CB7g6u2rhsdh8,1807
8
8
  hestia_earth/utils/descriptive_stats.py,sha256=EMVwFvg2OnZgKRAfireAoWY2EbrSvqR0V0bK9B53p28,1583
9
- hestia_earth/utils/emission.py,sha256=Dk99fpfGhVH3Azebqt7KAldWzVkEtsW5Yr1Ggfse8ho,1675
9
+ hestia_earth/utils/emission.py,sha256=BhBitooLTxZSh82S982v2QfPxxTF1kmGClG_uHyWdz4,1981
10
10
  hestia_earth/utils/lookup.py,sha256=0RLqy3HPzkbhkRaO7fYoHU0jKhAYzI6QHMptMEbqTlg,10344
11
- hestia_earth/utils/lookup_utils.py,sha256=DXjxrgb6ETnFnzgQpDdhAoja2YuI7b-5QyomJDFr5Qc,5985
11
+ hestia_earth/utils/lookup_utils.py,sha256=keTLWHGhCsk10nrHXz96B9mgZaR6TuWIlFecn6YZeDU,6512
12
12
  hestia_earth/utils/model.py,sha256=uUcrF07XmBzqLni8VSaP0HoebJnQ57kk0EOmhwYMbfI,4637
13
13
  hestia_earth/utils/pipeline.py,sha256=O-6DPtK0U1lJ51LFGa1gM6pjkBJUfxOjNjY8LxQPXV0,9588
14
14
  hestia_earth/utils/request.py,sha256=bu7hkWKmFdXl2_Feawiam_x32whlclA9oP0asJyC69k,626
@@ -16,7 +16,7 @@ hestia_earth/utils/stats.py,sha256=4t3op10xDJbGxWJEY1Jtyl302PYWyMFwLpsSkMlzQn8,3
16
16
  hestia_earth/utils/table.py,sha256=RrTt-KF_QzjKiCpaAueoG6La1FG-Iusxw5NMDpoRBpQ,2861
17
17
  hestia_earth/utils/term.py,sha256=6LiUSc6KX3IOkfWF6fYkQ2tENCO8ENljcdDypxU6WtA,1060
18
18
  hestia_earth/utils/tools.py,sha256=9GaUJwxL-CTzEOGnRFkUQDVFelPevQSxXrf25vssCVo,4990
19
- hestia_earth/utils/version.py,sha256=JsSUgxGFTJenpZ-C8T3RsjjTqcfvNP4_JsQwOIQcUeE,20
19
+ hestia_earth/utils/version.py,sha256=aShRtlHqbFF51JM0GVyMEvBFOO14d13wGmbTFA2qqTU,20
20
20
  hestia_earth/utils/pivot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  hestia_earth/utils/pivot/_shared.py,sha256=JnyIOzpans45DE2hSa9-4yvNhq8t08lx1IAWGJi6WPQ,1397
22
22
  hestia_earth/utils/pivot/pivot_csv.py,sha256=zaiDcig4I5lVSHPZ-2bXKKBcIRrayA0GUaw0c8H3D-w,12371
@@ -26,12 +26,12 @@ hestia_earth/utils/storage/_azure_client.py,sha256=sevCZni04eknMql2DgUsWG23f7u0K
26
26
  hestia_earth/utils/storage/_local_client.py,sha256=IbzziUKY0QS3ybHFfgEpELqvafa7hQnZ-DdGdjQuypE,515
27
27
  hestia_earth/utils/storage/_s3_client.py,sha256=B2yTsf-VfHcRLCKTMes4S_nCXxrZad9umyZx3b5Pu_c,3181
28
28
  hestia_earth/utils/storage/_sns_client.py,sha256=LowUatj78Egu6_Id6Rr7hZjfZx1WguS3lozB3yAwSps,347
29
- hestia_earth_utils-0.15.14.data/scripts/hestia-format-upload,sha256=IhLAHHPJqRgUcht-M_EUEsRMbRbMfshig07o488zscM,703
30
- hestia_earth_utils-0.15.14.data/scripts/hestia-pivot-csv,sha256=0YBuGuyPO8rytod6iwWEKiQdSlr9JLuD001k6U5t6no,1163
29
+ hestia_earth_utils-0.15.15.data/scripts/hestia-format-upload,sha256=IhLAHHPJqRgUcht-M_EUEsRMbRbMfshig07o488zscM,703
30
+ hestia_earth_utils-0.15.15.data/scripts/hestia-pivot-csv,sha256=0YBuGuyPO8rytod6iwWEKiQdSlr9JLuD001k6U5t6no,1163
31
31
  tests/pivot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  tests/pivot/test_pivot_csv.py,sha256=aYni7o3QDPSgtVxVCspEetotgpYHY7Lz5VHf-DR89gw,8131
33
33
  tests/pivot/test_pivot_json.py,sha256=UYTAN4AZhzVicIYsU1A2VgJcctUXohjHppg6s-pqwcg,8287
34
- hestia_earth_utils-0.15.14.dist-info/METADATA,sha256=Mpjtek3IFIguYtfT6tRF2u5j1dHWIMU-Cy1Gx_J44QE,1758
35
- hestia_earth_utils-0.15.14.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
36
- hestia_earth_utils-0.15.14.dist-info/top_level.txt,sha256=1dqA9TqpOLTEgpqa-YBsmbCmmNU1y56AtfFGEceZ2A0,19
37
- hestia_earth_utils-0.15.14.dist-info/RECORD,,
34
+ hestia_earth_utils-0.15.15.dist-info/METADATA,sha256=HuN5XpT-mjBlbfJU9n3Mt6uGKBp1BJ_YsHWMlRAemFg,1758
35
+ hestia_earth_utils-0.15.15.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
36
+ hestia_earth_utils-0.15.15.dist-info/top_level.txt,sha256=1dqA9TqpOLTEgpqa-YBsmbCmmNU1y56AtfFGEceZ2A0,19
37
+ hestia_earth_utils-0.15.15.dist-info/RECORD,,