hestia-earth-models 0.61.7__py3-none-any.whl → 0.62.0__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.

Files changed (51) hide show
  1. hestia_earth/models/cycle/completeness/electricityFuel.py +60 -0
  2. hestia_earth/models/cycle/product/economicValueShare.py +47 -31
  3. hestia_earth/models/emepEea2019/nh3ToAirInorganicFertiliser.py +44 -59
  4. hestia_earth/models/geospatialDatabase/histosol.py +4 -0
  5. hestia_earth/models/ipcc2006/co2ToAirOrganicSoilCultivation.py +4 -2
  6. hestia_earth/models/ipcc2006/n2OToAirOrganicSoilCultivationDirect.py +1 -1
  7. hestia_earth/models/ipcc2019/aboveGroundCropResidueTotal.py +1 -1
  8. hestia_earth/models/ipcc2019/animal/pastureGrass.py +30 -24
  9. hestia_earth/models/ipcc2019/belowGroundCropResidue.py +1 -1
  10. hestia_earth/models/ipcc2019/ch4ToAirExcreta.py +1 -1
  11. hestia_earth/models/ipcc2019/co2ToAirSoilOrganicCarbonStockChangeManagementChange.py +511 -458
  12. hestia_earth/models/ipcc2019/co2ToAirUreaHydrolysis.py +5 -1
  13. hestia_earth/models/ipcc2019/organicCarbonPerHa.py +116 -3882
  14. hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1_utils.py +2060 -0
  15. hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_2_utils.py +1630 -0
  16. hestia_earth/models/ipcc2019/organicCarbonPerHa_utils.py +324 -0
  17. hestia_earth/models/ipcc2019/pastureGrass.py +37 -19
  18. hestia_earth/models/ipcc2019/pastureGrass_utils.py +4 -21
  19. hestia_earth/models/mocking/search-results.json +293 -289
  20. hestia_earth/models/site/organicCarbonPerHa.py +58 -44
  21. hestia_earth/models/site/soilMeasurement.py +18 -13
  22. hestia_earth/models/utils/__init__.py +28 -0
  23. hestia_earth/models/utils/array_builders.py +578 -0
  24. hestia_earth/models/utils/blank_node.py +55 -39
  25. hestia_earth/models/utils/descriptive_stats.py +285 -0
  26. hestia_earth/models/utils/emission.py +73 -2
  27. hestia_earth/models/utils/inorganicFertiliser.py +2 -2
  28. hestia_earth/models/utils/measurement.py +118 -4
  29. hestia_earth/models/version.py +1 -1
  30. {hestia_earth_models-0.61.7.dist-info → hestia_earth_models-0.62.0.dist-info}/METADATA +2 -2
  31. {hestia_earth_models-0.61.7.dist-info → hestia_earth_models-0.62.0.dist-info}/RECORD +51 -39
  32. tests/models/cycle/completeness/test_electricityFuel.py +21 -0
  33. tests/models/cycle/product/test_economicValueShare.py +8 -0
  34. tests/models/emepEea2019/test_nh3ToAirInorganicFertiliser.py +2 -2
  35. tests/models/ipcc2019/animal/test_pastureGrass.py +2 -2
  36. tests/models/ipcc2019/test_co2ToAirSoilOrganicCarbonStockChangeManagementChange.py +55 -165
  37. tests/models/ipcc2019/test_organicCarbonPerHa.py +219 -460
  38. tests/models/ipcc2019/test_organicCarbonPerHa_tier_1_utils.py +471 -0
  39. tests/models/ipcc2019/test_organicCarbonPerHa_tier_2_utils.py +208 -0
  40. tests/models/ipcc2019/test_organicCarbonPerHa_utils.py +75 -0
  41. tests/models/ipcc2019/test_pastureGrass.py +0 -16
  42. tests/models/site/test_organicCarbonPerHa.py +3 -12
  43. tests/models/site/test_soilMeasurement.py +3 -18
  44. tests/models/utils/test_array_builders.py +253 -0
  45. tests/models/utils/test_blank_node.py +154 -15
  46. tests/models/utils/test_descriptive_stats.py +134 -0
  47. tests/models/utils/test_emission.py +51 -1
  48. tests/models/utils/test_measurement.py +54 -2
  49. {hestia_earth_models-0.61.7.dist-info → hestia_earth_models-0.62.0.dist-info}/LICENSE +0 -0
  50. {hestia_earth_models-0.61.7.dist-info → hestia_earth_models-0.62.0.dist-info}/WHEEL +0 -0
  51. {hestia_earth_models-0.61.7.dist-info → hestia_earth_models-0.62.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hestia-earth-models
3
- Version: 0.61.7
3
+ Version: 0.62.0
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
@@ -11,7 +11,7 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
11
11
  Classifier: Programming Language :: Python :: 3.6
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Requires-Dist: hestia-earth.schema ==28.*
14
+ Requires-Dist: hestia-earth.schema ==29.*
15
15
  Requires-Dist: hestia-earth.utils >=0.13.0
16
16
  Requires-Dist: python-dateutil >=2.8.1
17
17
  Requires-Dist: CurrencyConverter ==0.16.8
@@ -4,7 +4,7 @@ hestia_earth/models/cache_sites.py,sha256=KQp9cUKE-aIcYJoMWEtKFYS8gBFfsx5LKQhqoW
4
4
  hestia_earth/models/log.py,sha256=b63I3qyTtQs17xxbq8RI0Fv2lvZ1oDZ9k0njhxqiFFk,3459
5
5
  hestia_earth/models/preload_requests.py,sha256=elhYQTxBVuFlZROWvZ3yErDzzMLdMUIjBhmpdaTUSi8,1012
6
6
  hestia_earth/models/requirements.py,sha256=znNZJAhwX2iYiKcAQXPftY7z_1MsNa0QxCXkXyHm_U0,17363
7
- hestia_earth/models/version.py,sha256=6Nws4L3uBOwihJSLvy9rIuRjo77dHISAduPpMkcqB_Y,19
7
+ hestia_earth/models/version.py,sha256=20rNPRrr5iRqYOjgaG8FGBREz_Bc791OcD-8QH-p7UY,19
8
8
  hestia_earth/models/agribalyse2016/__init__.py,sha256=WvK0qCQbnYtg9oZxrACd1wGormZyXibPtpCnIQeDqbw,415
9
9
  hestia_earth/models/agribalyse2016/fuelElectricity.py,sha256=mrh8seYSYdTgcMDCETLiknuPeJehg071YoG4UiyW0yU,4404
10
10
  hestia_earth/models/agribalyse2016/machineryInfrastructureDepreciatedAmountPerCycle.py,sha256=_Rbngu0DzHKa62JwBl58ZC_ui1zLF2que_nB7ukhOQc,3392
@@ -69,6 +69,7 @@ hestia_earth/models/cycle/animal/input/properties.py,sha256=2bKyyclrt0O7zvtD1Ij7
69
69
  hestia_earth/models/cycle/completeness/__init__.py,sha256=rkwGtxIay_AleJCT7al_ngnix_xRqySVie7qvHXMQI0,1517
70
70
  hestia_earth/models/cycle/completeness/animalFeed.py,sha256=8Fo1TqwSuiPudvd2vJ-LVxSyOdD8mDCOZMvjuj5W2uo,1012
71
71
  hestia_earth/models/cycle/completeness/cropResidue.py,sha256=zSiu9h0NxEBDUWlaKBh1QcX4jDIklrs0BC2NWMCQQ80,2549
72
+ hestia_earth/models/cycle/completeness/electricityFuel.py,sha256=FWG8EuOPubTLDc3jMJv6NdFCgG0wOVgxv-5P9wA7Nys,2044
72
73
  hestia_earth/models/cycle/completeness/excreta.py,sha256=2yVxcuWjAh4hoEukaMJ90VZpkCL7SfpwIgzigbjVaF4,996
73
74
  hestia_earth/models/cycle/completeness/material.py,sha256=UQH2oRnUY-Q-_MVuOlTAYqQxc7wWDM5mi_iFmp9PlIQ,1362
74
75
  hestia_earth/models/cycle/completeness/seed.py,sha256=g4GOzRx249pEfr2beU9n5tzBiWA3hhxnqyiGri7QbEI,1662
@@ -93,7 +94,7 @@ hestia_earth/models/cycle/pre_checks/cache_sources.py,sha256=jCynHYIqOVizBSPKWKi
93
94
  hestia_earth/models/cycle/pre_checks/site.py,sha256=n26QBpRTvUIZ-_SyD8D2_0Ny_JsFG1977ZKUaZAIFb0,870
94
95
  hestia_earth/models/cycle/product/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
96
  hestia_earth/models/cycle/product/currency.py,sha256=lB1pCD1747Ke3oFoqjAKEHbIdHPfrHKNaJSni69iMUQ,2150
96
- hestia_earth/models/cycle/product/economicValueShare.py,sha256=bbEyasn6SoVRkQFfDq7tSfM0_xnfhen3MmjbDGLZN5o,7601
97
+ hestia_earth/models/cycle/product/economicValueShare.py,sha256=jSuwTa94OKnI4vn8B_DVkVyjRHSqDGoF6rAwl4NK1zk,8540
97
98
  hestia_earth/models/cycle/product/price.py,sha256=E5Q0TkfbbsJHZZD3cBGZvvHj0f2sJrgLGulRCyILTbY,1449
98
99
  hestia_earth/models/cycle/product/primary.py,sha256=FYyl-Mv8AmEml1nhDJwU01N4LrszJm6E31eztQDHzdg,1853
99
100
  hestia_earth/models/cycle/product/properties.py,sha256=PiwCod4dlMScTm_MQhY35QpeLRuHvdsc_nijv_7TqNM,1377
@@ -113,7 +114,7 @@ hestia_earth/models/emepEea2019/__init__.py,sha256=l90-pWrqIzt1ap1WNk0gF4iZeF5_T
113
114
  hestia_earth/models/emepEea2019/co2ToAirFuelCombustion.py,sha256=DfoGlB5HjA1gafO0OutJjfsA6yPP_PsAd-p16evwCiQ,1609
114
115
  hestia_earth/models/emepEea2019/n2OToAirFuelCombustionDirect.py,sha256=R3lRF5-Md4Jd7irvTe8WJZJPc9-wa1pD6UWVk7lnGtQ,1616
115
116
  hestia_earth/models/emepEea2019/nh3ToAirExcreta.py,sha256=lWo1AaorIk4HtTCQAND3RFbCHO-em1DbA5ZOxv0Ldn8,3750
116
- hestia_earth/models/emepEea2019/nh3ToAirInorganicFertiliser.py,sha256=Ypq6Zw0zFRb4-lrIY9FyMsHL8EykfSlzm3iCre_gZSk,6647
117
+ hestia_earth/models/emepEea2019/nh3ToAirInorganicFertiliser.py,sha256=AMZlOpeajrhbjGWIq_mLJJHfOF9RH9GswkbvVyrqop0,6201
117
118
  hestia_earth/models/emepEea2019/noxToAirFuelCombustion.py,sha256=y49RvO5OkrZ4iK7o2Kmx5xW52y8SS9xEKAmlXlTQtWc,1609
118
119
  hestia_earth/models/emepEea2019/so2ToAirFuelCombustion.py,sha256=bo_0mFcwicpOkPsvZRAnL2tDBDRBAQqsPD_Wc5e20K4,1609
119
120
  hestia_earth/models/emepEea2019/utils.py,sha256=ikoZn3JPe9wz-_voVlIqVwh4jBgmnfKi2oyLhi7_7E4,1398
@@ -142,7 +143,7 @@ hestia_earth/models/geospatialDatabase/ecoClimateZone.py,sha256=hzK9Je_4NvbLtgAM
142
143
  hestia_earth/models/geospatialDatabase/ecoregion.py,sha256=awvHn0YEVu-YaW0ZDgBo_zbjSJU2EvydM_qAT_CL78A,1462
143
144
  hestia_earth/models/geospatialDatabase/erodibility.py,sha256=M62CetEcHuExeXl7P7DVKZWWbk9tenjaDFvjMsWbga4,1843
144
145
  hestia_earth/models/geospatialDatabase/heavyWinterPrecipitation.py,sha256=8IC-ceKlwWw6-b6aCTVNaF1wNHPchKnVZcNHZRdLUmY,1996
145
- hestia_earth/models/geospatialDatabase/histosol.py,sha256=ejv1EfNa49gSJDP7FTa1Hio_cN62nIQEUh-DjlnpIgk,2263
146
+ hestia_earth/models/geospatialDatabase/histosol.py,sha256=5zwKdF1t9aOjTzBoear62T0Kzpjco-IJXu4oRYrUFQ8,2387
146
147
  hestia_earth/models/geospatialDatabase/longFallowRatio.py,sha256=VnTW2Y7qpoxlEarOM85SzxhFb1kayNJAiecRXatrEpw,1872
147
148
  hestia_earth/models/geospatialDatabase/nutrientLossToAquaticEnvironment.py,sha256=uEsoYJ1mzgUo6fQhUrcJ-ATcFw1j9oEgqMXKbQuFRxQ,1973
148
149
  hestia_earth/models/geospatialDatabase/organicCarbonPerKgSoil.py,sha256=gt3-crrUN0HPtIKY7Hf9dUteCXkegSICVjO-jufDqas,2196
@@ -197,7 +198,7 @@ hestia_earth/models/ipcc2006/__init__.py,sha256=ReUFPLqIyp16QEOGaiHmz41QbuwYBQYD
197
198
  hestia_earth/models/ipcc2006/aboveGroundCropResidueRemoved.py,sha256=6FDgMH5eiO1mEn20oerYpWty6t9058JS3MCdfVmeY_o,2714
198
199
  hestia_earth/models/ipcc2006/aboveGroundCropResidueTotal.py,sha256=vD_kpvOJmjTOjDEnlqSYBSZxjuPGvzpmCr0JIC84GKE,3431
199
200
  hestia_earth/models/ipcc2006/belowGroundCropResidue.py,sha256=KzeRphJb1IWB_EPVcxa9tbCoNmEe80D9lKxgQOqfKoU,4138
200
- hestia_earth/models/ipcc2006/co2ToAirOrganicSoilCultivation.py,sha256=8AzFuqRprk6o-uyyI3XYsTGl2dP_ALgYJXWCseYEBQ8,3029
201
+ hestia_earth/models/ipcc2006/co2ToAirOrganicSoilCultivation.py,sha256=UqjYsbpcSnNb20zLTZ2qkO_tLfDBL1iJmwndeuuwGYk,3133
201
202
  hestia_earth/models/ipcc2006/n2OToAirCropResidueDecompositionDirect.py,sha256=_2oTngpspikbFwgFTtOWs-SgEVF8LzznvITGITTtol4,2913
202
203
  hestia_earth/models/ipcc2006/n2OToAirCropResidueDecompositionIndirect.py,sha256=kf4WjdMzs6d8h433LFuUH9LJKJ_aMHTqEHDToGY5-Xk,2315
203
204
  hestia_earth/models/ipcc2006/n2OToAirExcretaDirect.py,sha256=VvQTIh58JyhrdPk5FdJQBkjBDr5-Cv7CnGkNEcco3P4,1986
@@ -206,22 +207,22 @@ hestia_earth/models/ipcc2006/n2OToAirInorganicFertiliserDirect.py,sha256=0Lyhqh3
206
207
  hestia_earth/models/ipcc2006/n2OToAirInorganicFertiliserIndirect.py,sha256=s5-pnhzz3fEYkdMZEGGlecp7XlPh_9vxyN78VoOUP2Y,3171
207
208
  hestia_earth/models/ipcc2006/n2OToAirOrganicFertiliserDirect.py,sha256=xB-5jp551knTSWvJeeowO1ERpLCdXrZJKttN7xU_6RY,2396
208
209
  hestia_earth/models/ipcc2006/n2OToAirOrganicFertiliserIndirect.py,sha256=NAdGaG6-5Mrrwe17ED8R_3en-zuMqHFDtrRlqi9USSI,3103
209
- hestia_earth/models/ipcc2006/n2OToAirOrganicSoilCultivationDirect.py,sha256=0J6ntZxYyLg3pUQeSQelDe36fb0nQtbMLjIBtwzHUyc,3038
210
+ hestia_earth/models/ipcc2006/n2OToAirOrganicSoilCultivationDirect.py,sha256=7Y8sT1mTpd_Qu160-nekOdjCNMJsVA51DjpAWzof2nU,3030
210
211
  hestia_earth/models/ipcc2006/utils.py,sha256=flB7HWrynzOorKlmrpbETGD63NMv45H8Wxjj3RCav98,739
211
212
  hestia_earth/models/ipcc2013ExcludingFeedbacks/__init__.py,sha256=v4Qe-X4w3tqIHGJBNnEAK81x4ZuQMwYxQYXRncugmcU,427
212
213
  hestia_earth/models/ipcc2013ExcludingFeedbacks/gwp100.py,sha256=8VRg-Vvzc86_CQmBH-iHNhaSnAFHew2swAMecT0aXW4,979
213
214
  hestia_earth/models/ipcc2013IncludingFeedbacks/__init__.py,sha256=VJ16KIGQQHybzZiTvu3mpZy_3j0xcd06RHHCfPrCMgU,427
214
215
  hestia_earth/models/ipcc2013IncludingFeedbacks/gwp100.py,sha256=PTE0FEV5x7MZgWpA6iu7EtIYaYKl6Udc9icpafkqlEA,979
215
216
  hestia_earth/models/ipcc2019/__init__.py,sha256=LdRpu8KbEc-MroIwXfKDjfj-xbgmfUYgctjKVvtpRfQ,409
216
- hestia_earth/models/ipcc2019/aboveGroundCropResidueTotal.py,sha256=PEuCp8W09GEF1JFnMi5wKsP0627Qkh_awqMyR184QwU,2917
217
- hestia_earth/models/ipcc2019/belowGroundCropResidue.py,sha256=mk4nq40qI4p1A44mrEnPARGyzNqY_6LwFifKmNusfNM,3308
217
+ hestia_earth/models/ipcc2019/aboveGroundCropResidueTotal.py,sha256=KjCPJ-AoEuBQzz9uBq_tQXG0P3KxM1bEKcwF_Jeq4Dg,2932
218
+ hestia_earth/models/ipcc2019/belowGroundCropResidue.py,sha256=DYic7zGSzkDP6kA5f6tRTB5alARCMGWY5ApjPkMU-7c,3323
218
219
  hestia_earth/models/ipcc2019/carbonContent.py,sha256=I76bJaO1OYSrIjwDKxhwY-DZGZJubgVJSxtZHx5jQxY,7237
219
220
  hestia_earth/models/ipcc2019/ch4ToAirEntericFermentation.py,sha256=khX90NjkmlvosyRZ77QxgwTKwg42Z_ftOWTTAanHViw,11420
220
- hestia_earth/models/ipcc2019/ch4ToAirExcreta.py,sha256=IzYHdnzT8Z-WQGoZIt9-O98VqriA5rKr38He_TbYadk,6723
221
+ hestia_earth/models/ipcc2019/ch4ToAirExcreta.py,sha256=jEGgEUhMr0JHq_-lPJioKHOQGQXrQvblU51AppXKvB0,6719
221
222
  hestia_earth/models/ipcc2019/ch4ToAirFloodedRice.py,sha256=TJ4J7VA5n4RPrJYZQeR3lc3ZoCw7T1E5Cb1XJewr834,7331
222
223
  hestia_earth/models/ipcc2019/co2ToAirLimeHydrolysis.py,sha256=7z0zdqiiWQwkyJCgSNMoK2mft3cJkTRlqwKrMuSKdWI,2454
223
- hestia_earth/models/ipcc2019/co2ToAirSoilOrganicCarbonStockChangeManagementChange.py,sha256=X-pUmOa7oy6uvgr0cMDeKRLVIQvh-4bjjrronvd0F3k,25370
224
- hestia_earth/models/ipcc2019/co2ToAirUreaHydrolysis.py,sha256=071H3ykjzJFW2K5PKvbAaeIj0aL8LTzMiG_pIeYEpEc,3520
224
+ hestia_earth/models/ipcc2019/co2ToAirSoilOrganicCarbonStockChangeManagementChange.py,sha256=LiExh87zjrsD6ZOpB8MMTLKtSq1do6LSaUzJGn1mpKY,26901
225
+ hestia_earth/models/ipcc2019/co2ToAirUreaHydrolysis.py,sha256=Ofld5SuRKndcKB3FFFoUdzSgNq-gc4kmiNyyrPKQ3Io,3580
225
226
  hestia_earth/models/ipcc2019/croppingDuration.py,sha256=_jlFrTNDOARH2_g8s4dzuaCoLHSX2BHzSQd3uuQN32Y,3173
226
227
  hestia_earth/models/ipcc2019/ligninContent.py,sha256=wp5EbCthCDAKyvPBfZULS9-uKEY58TQQ8ey1pf-juv8,7267
227
228
  hestia_earth/models/ipcc2019/n2OToAirCropResidueDecompositionDirect.py,sha256=Fand7NbT27unwgFTxi_9NxT024s63vQ7U6-tk9yp3d8,3990
@@ -241,12 +242,15 @@ hestia_earth/models/ipcc2019/no3ToGroundwaterInorganicFertiliser.py,sha256=eyPfy
241
242
  hestia_earth/models/ipcc2019/no3ToGroundwaterOrganicFertiliser.py,sha256=px2SN-uaus2cftXzlsYCUAxLuon6BnDXmaFI9xhQrgU,3347
242
243
  hestia_earth/models/ipcc2019/noxToAirInorganicFertiliser.py,sha256=fmmFgjtvOD2TrrLY03jYly_KvDnCsAXqhL_tmZQQt-A,4480
243
244
  hestia_earth/models/ipcc2019/noxToAirOrganicFertiliser.py,sha256=9dx_MRTwJGxJRq6mj2EJQMdQ2w6j7lw0fQk0If_cIGc,4152
244
- hestia_earth/models/ipcc2019/organicCarbonPerHa.py,sha256=x2U3FwZuM-lVDCzXmj5eCFOt8b3DIszeebnYIFWCeBc,141712
245
- hestia_earth/models/ipcc2019/pastureGrass.py,sha256=Q3uX7IcTk0PmzxqEhU3JAcHb5LnUymZbmdRFP9xXsfo,8713
246
- hestia_earth/models/ipcc2019/pastureGrass_utils.py,sha256=nUJYYkovzF7QD4LeUqhV5mBYFKdrhxeG4gyPRv0Xpuk,16002
245
+ hestia_earth/models/ipcc2019/organicCarbonPerHa.py,sha256=8rQifRZYQdoBz9HpoSbmrKiGP7ayQUZT78KEErgqtwc,8658
246
+ hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1_utils.py,sha256=YrjsBTmFbOw2DlGgcxf1B0d_NeNhE1Fl_OG4DrCPhLU,82293
247
+ hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_2_utils.py,sha256=xIp0Xu4Ke3lksR5fDyYT7f5qmjevV9oCtLvdNnvqvgA,57974
248
+ hestia_earth/models/ipcc2019/organicCarbonPerHa_utils.py,sha256=CrQWsDhW--wNQ2HEc_zxdFKuIdBHEwOQnVJGA3HgPpQ,10856
249
+ hestia_earth/models/ipcc2019/pastureGrass.py,sha256=FCp39CiMUwzvsAsX0-stLlDAjFy6g5brmr9-XD8TuN0,9318
250
+ hestia_earth/models/ipcc2019/pastureGrass_utils.py,sha256=J7Du1woOvEbqyAMX9cNQ2NYDYpiVAbYWMEn_w2oBVbM,15394
247
251
  hestia_earth/models/ipcc2019/utils.py,sha256=MSDMu15D9DnilFUgi4_6jYXC0FaKso3OODauGTMB6hs,6229
248
252
  hestia_earth/models/ipcc2019/animal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
249
- hestia_earth/models/ipcc2019/animal/pastureGrass.py,sha256=xPtuTiKeAvBhv9d7B6Upw_cbP6YxKykVJ3_p0S_EtZg,10689
253
+ hestia_earth/models/ipcc2019/animal/pastureGrass.py,sha256=hOPTRzwugjoPWhVMvi9JfWdROH0V2EE9n2jAksyFqL0,10936
250
254
  hestia_earth/models/ipcc2019/animal/weightAtMaturity.py,sha256=5smSAmKVCIlELCD6S_3I16YuSWNFhcClGDOdvrIuYsE,3657
251
255
  hestia_earth/models/ipcc2021/__init__.py,sha256=VTgGFKhwMmk_nuI1RRq0in27fHYVPBonlXlPK00K8no,409
252
256
  hestia_earth/models/ipcc2021/gwp100.py,sha256=v-DYU-11XnWI1Ns1GEiKrJqL3JafxvhTsLmuBuFcxJU,1021
@@ -360,7 +364,7 @@ hestia_earth/models/linkedImpactAssessment/landTransformationFromPermanentPastur
360
364
  hestia_earth/models/linkedImpactAssessment/utils.py,sha256=dGwGc2d-8_WQElTpfyPmz5vQtL-LHQRmiZnCTuPXMDs,1876
361
365
  hestia_earth/models/mocking/__init__.py,sha256=n3Fkkrvh8zHNWiJZmnfQ7WZ91JRzAO9P6pSG1JpwtXo,687
362
366
  hestia_earth/models/mocking/mock_search.py,sha256=dBCDRfbZmbMLKP21u_VYkxyimomqs-zztjX-_ZNKuuM,2036
363
- hestia_earth/models/mocking/search-results.json,sha256=-avKhbyd4WJc1by-WLUYhAjV_adov3NNKLkDYKHa9oY,43544
367
+ hestia_earth/models/mocking/search-results.json,sha256=bXKQ-rzwrMA_DWaLa5FFHkRBmnmHaTwHZylVcEIULMw,43626
364
368
  hestia_earth/models/pooreNemecek2018/__init__.py,sha256=nPboL7ULJzL5nJD5q7q9VOZt_fxbKVm8fmn1Az5YkVY,417
365
369
  hestia_earth/models/pooreNemecek2018/aboveGroundCropResidueTotal.py,sha256=Qt-mel4dkhK6N5uUOutNOinCTFjbjtGzITaaI0LvYc4,2396
366
370
  hestia_earth/models/pooreNemecek2018/belowGroundCropResidue.py,sha256=JT0RybbvWVlo01FO8K0Yj41HrEaJT3Kj1xfayr2X-xw,2315
@@ -461,7 +465,7 @@ hestia_earth/models/site/flowingWater.py,sha256=0ZuSXMr3EUTY3wsy8hdfuXeZcNX-n3D4
461
465
  hestia_earth/models/site/freshWater.py,sha256=z-C_Il0U6UhZUQUPwh72Z0vixmSrUNEmBN5Lz-nl9_w,1254
462
466
  hestia_earth/models/site/management.py,sha256=o9WIvbxip6B-jbQdgko6H2l1neQ0Z5ZpcPJmM5gcYlw,8832
463
467
  hestia_earth/models/site/netPrimaryProduction.py,sha256=UIIQkYd911qVzrWjxBLrC37e-RARIVgDwLdARY9BuLw,1849
464
- hestia_earth/models/site/organicCarbonPerHa.py,sha256=-qQWy1BI4vZJJNMS1RCluZ34dOTqR0lblXSOZLjkhOo,14362
468
+ hestia_earth/models/site/organicCarbonPerHa.py,sha256=O6t4D3Jj1kjMIBOpnIrJ58kzUP_FIlpMUEFKQAeS77c,14916
465
469
  hestia_earth/models/site/organicCarbonPerKgSoil.py,sha256=t--wAshiAKS-JvEKhLFRadGvgSBv5NFZ68jdyms_wh4,1945
466
470
  hestia_earth/models/site/organicCarbonPerM3Soil.py,sha256=pdv5V-ojcfhlGzPwRS9s-vEnxiHZQPZP-ESVcz2pt0g,1945
467
471
  hestia_earth/models/site/organicMatterPerKgSoil.py,sha256=fJpFVkpuCjnrBhgV0RtwKqQHvAJWWtZO9xtmnJnl8O4,1945
@@ -473,7 +477,7 @@ hestia_earth/models/site/precipitationMonthly.py,sha256=yGUbiUCu1Prp3qVHuZodGrcf
473
477
  hestia_earth/models/site/rainfallAnnual.py,sha256=Ix_B8Ny7IIRkJ_3lUvoHOjPgqCyR9I0U3_ADUUtMqsY,2003
474
478
  hestia_earth/models/site/rainfallMonthly.py,sha256=2Uo8F-YxnTK0_txlHmiAyVp1bGfWD4bneRKyg4tdQkI,1881
475
479
  hestia_earth/models/site/salineWater.py,sha256=HO31JcUBw5WQYGu9zHNqbARasBubNFgJ7OxSVrK3D2o,1255
476
- hestia_earth/models/site/soilMeasurement.py,sha256=-yWmvl4vZYguVDd2bKdnGB_P4s1XZO_n9u4_aQ6xPLQ,6953
480
+ hestia_earth/models/site/soilMeasurement.py,sha256=8xUDajU_KzBVFEj7yfwIZxVXJ14C_AKAxEs4uSnFyps,7164
477
481
  hestia_earth/models/site/temperatureAnnual.py,sha256=Q3b1RH2_hpA0JWwOYA5nKgMGcXHjV8-akXT9vB0cbwc,2012
478
482
  hestia_earth/models/site/temperatureMonthly.py,sha256=yXwpFCGT2tUqvVBNedaPyBmN_KlzZqo5yv2TWem1pBk,1890
479
483
  hestia_earth/models/site/totalNitrogenPerKgSoil.py,sha256=8ERrTZpN_yCRUyFg_EYaX4abE9jLcyX3lx3MO4Bi6CE,1938
@@ -517,11 +521,12 @@ hestia_earth/models/transformation/product/__init__.py,sha256=47DEQpj8HBSa-_TImW
517
521
  hestia_earth/models/transformation/product/excreta.py,sha256=Yj9wMF5if-zivb6qbN3vy1X51ZNYxvoyG9f4KPp3Y18,5700
518
522
  hestia_earth/models/usetoxV2/__init__.py,sha256=pK37V3H-KvYcvRKw4Mv8CWrB2N0LFLzmv0jKLdhGGqs,409
519
523
  hestia_earth/models/usetoxV2/freshwaterEcotoxicityPotentialCtue.py,sha256=oYNwThnMXjZymif5buyHiczFiOq_61jOdDMOAyy8vwQ,1018
520
- hestia_earth/models/utils/__init__.py,sha256=5FY8tpFa7QjwAIsMTt2-QLB5_0Gy5AkAKk_BsKjE1CY,4400
524
+ hestia_earth/models/utils/__init__.py,sha256=EIuMvZCFyeUC4yyJi9LSVYpAMkjpAMMtBs1ljqJhVR4,5228
521
525
  hestia_earth/models/utils/aggregated.py,sha256=sz6usleZmo_tC_hIvmGgYsX8-H0dulXmmhHK4EkA5Kg,4946
522
526
  hestia_earth/models/utils/animalProduct.py,sha256=M5IunAKGY6oZv3j1Ascl34ywyeLWApqOIlBzbtlA2FE,721
523
527
  hestia_earth/models/utils/aquacultureManagement.py,sha256=dxrbC1Xf140cohxTbSw6TxLAnAASWTdNZwBBam4yQnw,171
524
- hestia_earth/models/utils/blank_node.py,sha256=VcWvWRG4hlurgQG8PzklIa7SiZnuR6fnhC_TpE_9wuM,41977
528
+ hestia_earth/models/utils/array_builders.py,sha256=0_Ik0gKoh1QBijyb-55odh8_dIs-CWQ3lgUN1Hnc4Y8,18749
529
+ hestia_earth/models/utils/blank_node.py,sha256=y6Gyp6p-CWvMd5mgN-sZFtGy1Q22YLo-vYsL_bO7CaM,42672
525
530
  hestia_earth/models/utils/completeness.py,sha256=2-GusD9UycobDZq8y5jar0ZcOjyqnSbzPRT_5XMc4YA,1259
526
531
  hestia_earth/models/utils/constant.py,sha256=5H7odhRwU_LmUhYwf8c1LsdqXSYbLWkuknvtRDqUBTQ,3194
527
532
  hestia_earth/models/utils/crop.py,sha256=kG054fryqPSBpmzvJFBy_CLiOdjrt7RMk5uTItO5ADg,2246
@@ -529,19 +534,20 @@ hestia_earth/models/utils/cropResidue.py,sha256=_0Q35CrliJeo31xGHsPWe8A2oHxijdIs
529
534
  hestia_earth/models/utils/cropResidueManagement.py,sha256=nIDFjf39rDD10UHSVudfDyu-EiL261g8jyrgS-2aDKw,347
530
535
  hestia_earth/models/utils/currency.py,sha256=f_ArJANb--pZq4LL49SXQ1AMX_oKroqwBXKRRQqZwsM,578
531
536
  hestia_earth/models/utils/cycle.py,sha256=QgTmfds-SGEqGJNqEZ5A1iAxCZ54Ac0QPSmqECHPFeg,15927
537
+ hestia_earth/models/utils/descriptive_stats.py,sha256=qOyG8_TpWYmaxZ0h99n9L71gDLLiVMrMf0ChtxnZLjw,8559
532
538
  hestia_earth/models/utils/ecoClimateZone.py,sha256=NHFt-A9EiWXC6tUNIxkgOWUZOjj4I4uwJIP9ddDZegw,1112
533
- hestia_earth/models/utils/emission.py,sha256=AVp-ngrb4VHYT8BG1QA5EEb17edT3cLonsXV3cNm04U,1576
539
+ hestia_earth/models/utils/emission.py,sha256=5Dz8Z4P6QXbYSvOzVcqJy3R_oZMrp77_Iwj5xZsxsKc,3769
534
540
  hestia_earth/models/utils/excretaManagement.py,sha256=NuWPQjFZxMVt9sYgBjcqhGWCFk_OKb3sA9Ovcff3fRQ,428
535
541
  hestia_earth/models/utils/feedipedia.py,sha256=ImUAURcwJDtSvu1s4MDeM1VpbU8mVTp9jh9ENNOB0Mw,3515
536
542
  hestia_earth/models/utils/fertiliser.py,sha256=DBO4OBNgnQJ0fCQMDkIk_ZGZX-uKGaTFZCEXfAnJciY,690
537
543
  hestia_earth/models/utils/fuel.py,sha256=r1MKMMxg-PYiVlRutP83RuvY2rsdCQ1iN6ekSGGQGpA,1379
538
544
  hestia_earth/models/utils/impact_assessment.py,sha256=H1_cvLwC8nb3A5ckS9uvWrLqUDU_9i9BdQiPpn52xIg,6890
539
545
  hestia_earth/models/utils/indicator.py,sha256=fPq38ifd53xWbuOfoiVwiA0Nwa7jVPJLSAPpOMMil8Q,423
540
- hestia_earth/models/utils/inorganicFertiliser.py,sha256=wTQKnr_fPse-G8aP3Dxrj8mzNSQgXvNL9auy_RWzY5Q,1894
546
+ hestia_earth/models/utils/inorganicFertiliser.py,sha256=_dLBY-otGkLr8PobR5dQ89bF2uwc2PB4JPrHFSksMEQ,1900
541
547
  hestia_earth/models/utils/input.py,sha256=YycsAbSBfVDMu6PftDsisMFGnEp87wOj-3rrnHnOgzo,4927
542
548
  hestia_earth/models/utils/liveAnimal.py,sha256=GnajBPZw5d94raf80KtLloaOqlfqGAPwUtP9bRlGWeE,1754
543
549
  hestia_earth/models/utils/lookup.py,sha256=9yAw8JILIeAmnAC0dL1Yi6xB4h9quzV3GJQGUKe8ers,6370
544
- hestia_earth/models/utils/measurement.py,sha256=c0Zkz0a5hWxpYJ83aWsWTeSsukfh-dzjKlCmuj1vCY4,8070
550
+ hestia_earth/models/utils/measurement.py,sha256=rss0nVmgL5uAWE7_aaGWIJAcg7SkWVpDUzgzHpuEpdo,12221
545
551
  hestia_earth/models/utils/organicFertiliser.py,sha256=2HY-a0EBzUw4DkEAXClLMXVCEZTKYf0BwFHBo7lQ5Tg,363
546
552
  hestia_earth/models/utils/pesticideAI.py,sha256=6f8b-dFm3qr-eY049_eOvj_iDk4XBam61csozdDAvyA,2361
547
553
  hestia_earth/models/utils/practice.py,sha256=tNadOzsrNlCEt801B815XaruJXzZ5yPASam7B3sWpXE,1091
@@ -626,6 +632,7 @@ tests/models/cycle/animal/input/test_properties.py,sha256=rp-PfGijk-Sbh1NsV5nkf9
626
632
  tests/models/cycle/completeness/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
627
633
  tests/models/cycle/completeness/test_animalFeed.py,sha256=J52m1kInw8mPE_pwx0j3QGKI8ZpDGeN2TLqUuArn7WA,348
628
634
  tests/models/cycle/completeness/test_cropResidue.py,sha256=TzPrnvAQA5GzmwL-bYOLgR3wjtMdKuPx55wT_HHfJ6c,592
635
+ tests/models/cycle/completeness/test_electricityFuel.py,sha256=TbaSwsx8IIS1xWXhxg798O8xTEQ7MXM4XKlfQBtQBw8,580
629
636
  tests/models/cycle/completeness/test_excretaManagement.py,sha256=GGKQTZZj_F6EkvTOVjunVixFC584HmsCgPP5H6radc8,345
630
637
  tests/models/cycle/completeness/test_material.py,sha256=bA1_32wmtdd77cD8vinkIjspZfheQuyeyum1fm-Ei0k,498
631
638
  tests/models/cycle/completeness/test_seed.py,sha256=txpypNeoX08QC3wPUd92gnWuvPTsVSqT9RJb6Z5AUUE,1018
@@ -644,7 +651,7 @@ tests/models/cycle/pre_checks/test_cache_sources.py,sha256=tvk7E1LlJSq2Sb2MKBRlx
644
651
  tests/models/cycle/pre_checks/test_site.py,sha256=2JTrsOXVGfNn7FlLiX7DPNs6AHdeZuVvjNZP6SCjEII,694
645
652
  tests/models/cycle/product/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
646
653
  tests/models/cycle/product/test_currency.py,sha256=r7TA0FDDS9U50-FolEMXESi4pvSmwXnQxAHrQh0lRjA,1222
647
- tests/models/cycle/product/test_economicValueShare.py,sha256=58EsOw5nZWGTsKK_LFblIz3YwmCXROT-GffHojmd674,4417
654
+ tests/models/cycle/product/test_economicValueShare.py,sha256=sFS-gKt6oglqeKuDqHsPfZ90cEROOIdydFsOu4E85eo,4624
648
655
  tests/models/cycle/product/test_price.py,sha256=zmWNdF2P4k2QTje_62NJDklCIwmk2vF8xuOoVzL9qf0,1193
649
656
  tests/models/cycle/product/test_primary.py,sha256=UfLOOxUkDyeSOmDv4NyN6v5Yf0RO9etZNT797fbCbpA,1862
650
657
  tests/models/cycle/product/test_properties.py,sha256=7pcBH_Ny8JeQ2dWXBU-ZSmY5iYl0f_qFejp8Vk5e1H8,1142
@@ -658,7 +665,7 @@ tests/models/emepEea2019/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
658
665
  tests/models/emepEea2019/test_co2ToAirFuelCombustion.py,sha256=HXQTSIkJzCKsb-9fGStkxtkcK65KS3sJlvShW2F6EaU,1450
659
666
  tests/models/emepEea2019/test_n2OToAirFuelCombustionDirect.py,sha256=vmZAAUkxfJyaRoioEEFmz8EtR3X_MCeaA-0VjjNNmQE,1456
660
667
  tests/models/emepEea2019/test_nh3ToAirExcreta.py,sha256=VtZFVWaHjqlxdge1Qir-OghNZtfsIJvLpg_8UNp0akU,1363
661
- tests/models/emepEea2019/test_nh3ToAirInorganicFertiliser.py,sha256=dFNDCJ_EA8F8faFjBNHwgLOx743UlkdT9HJBpL0ObaQ,2069
668
+ tests/models/emepEea2019/test_nh3ToAirInorganicFertiliser.py,sha256=ZRU-mQiQLGX3xxOIP7r7iv08vCuRa6ElnKJs2AZ7a1E,2060
662
669
  tests/models/emepEea2019/test_noxToAirFuelCombustion.py,sha256=drCeoaGo6Ag3fdEDDSC3D880OXxzillzHk7rPYcVwmE,1450
663
670
  tests/models/emepEea2019/test_so2ToAirFuelCombustion.py,sha256=CNaT_z02DHDpBJ2IIkG0K7ra87WBg_iDkhx9QGAjk00,1450
664
671
  tests/models/emepEea2019/test_utils.py,sha256=jNb4T4yXWowUvY_1d_nxDTOBX-2K8jIG2TZ6SokxYP0,1843
@@ -763,7 +770,7 @@ tests/models/ipcc2019/test_ch4ToAirEntericFermentation.py,sha256=3Hv86L4X_Va2mZL
763
770
  tests/models/ipcc2019/test_ch4ToAirExcreta.py,sha256=e58NXmBW2SNVLUqQO9A66Xq6jiGTyhdFZDZk51JApF8,2902
764
771
  tests/models/ipcc2019/test_ch4ToAirFloodedRice.py,sha256=FAp5b45WdX5Ih4yGUOZ4CmVD8smW1Lw1tnulx9AKVBI,1980
765
772
  tests/models/ipcc2019/test_co2ToAirLimeHydrolysis.py,sha256=e5iuZ-kQNEVih0ZRgRPWqaUtXcLpfkoU7sQypbqA9_Y,1345
766
- tests/models/ipcc2019/test_co2ToAirSoilOrganicCarbonStockChangeManagementChange.py,sha256=NbEADyVQY6AAhpRemmJO9E4j9CzQ-3LK4MHDk3HJHIQ,7131
773
+ tests/models/ipcc2019/test_co2ToAirSoilOrganicCarbonStockChangeManagementChange.py,sha256=KCZfRKdkVgZ8u_mFsE99-yZ-A53SKOzyG1edYtI26P0,4242
767
774
  tests/models/ipcc2019/test_co2ToAirUreaHydrolysis.py,sha256=MmtEME0xjsa3KojFk_fxOLK6RZM_6p5HIpY2DOFHVu4,1530
768
775
  tests/models/ipcc2019/test_croppingDuration.py,sha256=gLRXeR6Tqa7ciD9KTRfsIflSeIIWT2iOpZMdcxAQla4,1871
769
776
  tests/models/ipcc2019/test_ligninContent.py,sha256=eIKEN__ab-0R52EhlhPSBiHnmTl6xOf1XbI33O-W9A4,4146
@@ -784,10 +791,13 @@ tests/models/ipcc2019/test_no3ToGroundwaterInorganicFertiliser.py,sha256=e7REnQ9
784
791
  tests/models/ipcc2019/test_no3ToGroundwaterOrganicFertiliser.py,sha256=e1ZViD12qB3bLdH3TJw3GbBP8iqMen-UJbcFkytb3VQ,1609
785
792
  tests/models/ipcc2019/test_noxToAirInorganicFertiliser.py,sha256=NZBSBJLM_j2PEpHRON2ysgKNF8x5sHfQVoAKQdGsfzk,1537
786
793
  tests/models/ipcc2019/test_noxToAirOrganicFertiliser.py,sha256=LR5pjV5vRbgSSQAw8kYRp_ij4CHInzgaDS6EggQuBiw,1104
787
- tests/models/ipcc2019/test_organicCarbonPerHa.py,sha256=TO3ubi8z8-iYEAdf295Z30ft5W1652GPkmaiQCb7QN4,23197
788
- tests/models/ipcc2019/test_pastureGrass.py,sha256=hn6tw-ifMTn00_WmYPIjRdm56SMF1w-eqETngVE29ns,3373
794
+ tests/models/ipcc2019/test_organicCarbonPerHa.py,sha256=q75Bq29hjmjPjbwFCNzTmTVOMr54izyXaeOlPPKQ5z8,13901
795
+ tests/models/ipcc2019/test_organicCarbonPerHa_tier_1_utils.py,sha256=e5RpK4GlH9tNxbwEyPQkO2lMwYBtGNp8ha8j4bZF9eg,20699
796
+ tests/models/ipcc2019/test_organicCarbonPerHa_tier_2_utils.py,sha256=gHAi0qr9vE2_TtyJOqOc5Wc8ZRIflQz8vKBOcvKTzCE,7020
797
+ tests/models/ipcc2019/test_organicCarbonPerHa_utils.py,sha256=Zd2QlN_Q3k9djuByOH62A00tryVzlvNtsd46N79TTeU,1778
798
+ tests/models/ipcc2019/test_pastureGrass.py,sha256=xcFXpszkqgeJImWOp-JlJxpcSHQKC-Pi0zdaKfai4a4,2660
789
799
  tests/models/ipcc2019/animal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
790
- tests/models/ipcc2019/animal/test_pastureGrass.py,sha256=2ZbeIxxEZ9xaDkfCY2pLripmtOG89iHMTrPqa2-UuQg,1983
800
+ tests/models/ipcc2019/animal/test_pastureGrass.py,sha256=IifdYacwC_cXn5wHeLqq2e0fJeIe8WLWOumYKY36MrE,1979
791
801
  tests/models/ipcc2019/animal/test_weightAtMaturity.py,sha256=Tss9bTVz66yXVEBZT31KMm6gd45B9E1DJLqwYArPuYY,665
792
802
  tests/models/ipcc2021/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
793
803
  tests/models/ipcc2021/test_gwp100.py,sha256=JRklKMSg-OXopb9ZufGgl94deuMuJSsfNXRZDBtOZrE,1119
@@ -996,7 +1006,7 @@ tests/models/site/test_flowingWater.py,sha256=t_rxvdlmUVDsFBoDF20_zDM-0iiLKkNCV7
996
1006
  tests/models/site/test_freshWater.py,sha256=GOeAxHhPW_2E1wQdQRX4W-r7mnb_LgmiAVLImitoApw,982
997
1007
  tests/models/site/test_management.py,sha256=gVtMv_sgmHdEEA_Xdjg73Z2YrwFtm2pN6jo6ZyJx86U,4825
998
1008
  tests/models/site/test_netPrimaryProduction.py,sha256=JCxG0MODbKVvl3hOqmKzh4FjHYn3Xs9KsVod6LvKQII,1108
999
- tests/models/site/test_organicCarbonPerHa.py,sha256=6Qtc0Xmveir7MmNF4Ekv5YkV92TNp8GfDnURPVg05-4,3471
1009
+ tests/models/site/test_organicCarbonPerHa.py,sha256=XtGrE7ZqthTF0x8lDxJ1slNd_GvYHEyEydcRgA46jEc,3207
1000
1010
  tests/models/site/test_organicCarbonPerKgSoil.py,sha256=0M-NMg_T3UXzGT_VlKOKhSxg4cZ0_zhd3FRgY5Hpj6o,1087
1001
1011
  tests/models/site/test_organicCarbonPerM3Soil.py,sha256=_teZwZKVM7b6YIokWJdqkYbIlSDY8eeOX4vZo7-0Mdo,1087
1002
1012
  tests/models/site/test_organicMatterPerKgSoil.py,sha256=ustKqQcv4GWa-0SdHvLlxJBDlY2zU9kdBCQoUIKO2BI,1087
@@ -1008,7 +1018,7 @@ tests/models/site/test_precipitationMonthly.py,sha256=iccr-_ZrseM_OT3AKZbTNQhRFS
1008
1018
  tests/models/site/test_rainfallAnnual.py,sha256=4YYna66qjJptPJ_URvdcQuRC3dri9SB0xmWP8DFwslM,986
1009
1019
  tests/models/site/test_rainfallMonthly.py,sha256=A3gIe2Yxt9CLtLcAJNCQ0-8aRB49VdfKBLBy-7eDgJw,985
1010
1020
  tests/models/site/test_salineWater.py,sha256=by_goKU4q5Dr-ctqosfrjFPZsG9KeG26Y_xMWEHBhpA,985
1011
- tests/models/site/test_soilMeasurement.py,sha256=AC4wyRlSdxcjRvq--CCmZd0Jxz2bfhFNmrg9SoWbKE0,4917
1021
+ tests/models/site/test_soilMeasurement.py,sha256=hZVgNmN5fgrHyTeXO1HrZ4tPm6Ko0yiTNbBfkDsdrUE,4398
1012
1022
  tests/models/site/test_temperatureAnnual.py,sha256=nOJG9ZJ8NCMM8T47uxxBeloIYLFN6-xtvUBqJsqt8xk,992
1013
1023
  tests/models/site/test_temperatureMonthly.py,sha256=C2lv-lpYqH7VUGOlxNLE6d7k_dFS6NYe8BvMlrJorCw,991
1014
1024
  tests/models/site/test_totalNitrogenPerKgSoil.py,sha256=2ILrA0jQKGniiKwS5FF3ZLtudgUgjcMnzFtrHpJKPTc,1161
@@ -1050,18 +1060,20 @@ tests/models/transformation/product/test_excreta.py,sha256=Q9OQpk8qVPv3alIz2i5XQ
1050
1060
  tests/models/usetoxV2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1051
1061
  tests/models/usetoxV2/test_freshwaterEcotoxicityPotentialCtue.py,sha256=eq7Gcmfya9g0eOKKkuBhz8vq7xi_CmZ_LTSxueBwZt4,835
1052
1062
  tests/models/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1053
- tests/models/utils/test_blank_node.py,sha256=hgom8mJPWqylnf4AfLgVlbYgAHAEcH8DngOdFidFMcw,34343
1063
+ tests/models/utils/test_array_builders.py,sha256=1zTc5r6Y9fcQ3x67S9Am0G3ip4Kp9_MmiSqIvY-M6yc,6470
1064
+ tests/models/utils/test_blank_node.py,sha256=zOZvZ0OPrLQSKwkuYhf9KBOEUa-pMn1zK0jxqhI3HaE,38039
1054
1065
  tests/models/utils/test_crop.py,sha256=ve_BqT2XuLTWAH-8YOnVY4nzMUSXYYXPB8S-5RtGlf4,463
1055
1066
  tests/models/utils/test_cropResidueManagement.py,sha256=RQt8lexeJzCyxZceIutgDpw7BpcqmjsUB0C0yZC2QpY,930
1056
1067
  tests/models/utils/test_currency.py,sha256=BPsojPsY9QW2aj8vgbjkPQXU8GU6wDwwtPZ3HdC4KTU,277
1057
1068
  tests/models/utils/test_dataCompleteness.py,sha256=mW6rA7ddhtjZsLxwo5xDnvBdxmqTsivy4RTIU-2Lvk0,1713
1058
- tests/models/utils/test_emission.py,sha256=lQczTe39tVHbk3BEanZGU_rq9HDST2uDReKof-SV37Y,829
1069
+ tests/models/utils/test_descriptive_stats.py,sha256=S-N4-JavFw8UQKju7QhvtimsAIe0TI4DjQT-0q_Y-Sk,3988
1070
+ tests/models/utils/test_emission.py,sha256=3KfhQGV5Vh_WXTPt6McvZ2dBp9TVM7eAUTLgRHkBOvU,2146
1059
1071
  tests/models/utils/test_feedipedia.py,sha256=S7c1W4bJ5xWXPh42pPbl3R7lDX_iEeaEtFaPXgB7hgE,906
1060
1072
  tests/models/utils/test_impact_assessment.py,sha256=qEm4Y5txWnkSJKP1puvwgKFXkv06c7vUKmwDyIJxkdc,1114
1061
1073
  tests/models/utils/test_indicator.py,sha256=GwYKV5N_yEPcJWz7FirRnK48rl62ofAn_TkAo0MioIM,639
1062
1074
  tests/models/utils/test_input.py,sha256=bSG6YKmT2ofY2oD5CGbNwR8-To-ihyNyr14Td5-jNRU,585
1063
1075
  tests/models/utils/test_liveAnimal.py,sha256=bntT4vULWsDF2DOigtiMjpS0gJS5ipalPsfrk-JxC-I,986
1064
- tests/models/utils/test_measurement.py,sha256=UGCUzuc3gHltehpuOA7dj0DJJY4xcVrQOJNmgz2vzGY,2673
1076
+ tests/models/utils/test_measurement.py,sha256=8_sdjySFeZOAS9USZg_CxSSmSSxawutfG_zS-lwcnVI,4436
1065
1077
  tests/models/utils/test_practice.py,sha256=ILaxkb3qICor9AquAGYiOtA-YKnq0hppmJQzNC_VNyA,612
1066
1078
  tests/models/utils/test_product.py,sha256=kwvgAeeEoRgkeStX0zQcFd-4DJhoUhX6Apaks0MU2L0,2305
1067
1079
  tests/models/utils/test_property.py,sha256=t2npw86IK7C6G4ypiPtanFi0db4PB7G5VBR1GjRGl34,618
@@ -1070,8 +1082,8 @@ tests/models/utils/test_source.py,sha256=mv3vHZV5cjpoLA2I1109-YUkuzAiuhbRSnv_76_
1070
1082
  tests/models/utils/test_term.py,sha256=M5Sa26v2gzQYbZ4H_fo7DspnaCx__-WtL-MULGapCWk,3509
1071
1083
  tests/models/webbEtAl2012AndSintermannEtAl2012/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1072
1084
  tests/models/webbEtAl2012AndSintermannEtAl2012/test_nh3ToAirOrganicFertiliser.py,sha256=qi2FNXS5Af2WDtm7nq_FsprH3BfCF0XxnE0XHmC4aIY,2244
1073
- hestia_earth_models-0.61.7.dist-info/LICENSE,sha256=AC7h7GAgCZGJK_Tzh6LUCrML9gQEfowWwecEw2w54QM,1154
1074
- hestia_earth_models-0.61.7.dist-info/METADATA,sha256=iynJo-vSse0wSWslH4jZ2jN5MzzWntK8WyH9rDPDtiE,3350
1075
- hestia_earth_models-0.61.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
1076
- hestia_earth_models-0.61.7.dist-info/top_level.txt,sha256=1dqA9TqpOLTEgpqa-YBsmbCmmNU1y56AtfFGEceZ2A0,19
1077
- hestia_earth_models-0.61.7.dist-info/RECORD,,
1085
+ hestia_earth_models-0.62.0.dist-info/LICENSE,sha256=AC7h7GAgCZGJK_Tzh6LUCrML9gQEfowWwecEw2w54QM,1154
1086
+ hestia_earth_models-0.62.0.dist-info/METADATA,sha256=I4RMMfkN95mAgg48dBTcssIccEoKZqc1MLsXltrYgus,3350
1087
+ hestia_earth_models-0.62.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
1088
+ hestia_earth_models-0.62.0.dist-info/top_level.txt,sha256=1dqA9TqpOLTEgpqa-YBsmbCmmNU1y56AtfFGEceZ2A0,19
1089
+ hestia_earth_models-0.62.0.dist-info/RECORD,,
@@ -0,0 +1,21 @@
1
+ import json
2
+ from tests.utils import fixtures_path
3
+
4
+ from hestia_earth.models.cycle.completeness.electricityFuel import MODEL, MODEL_KEY, run
5
+
6
+ class_path = f"hestia_earth.models.cycle.{MODEL}.{MODEL_KEY}"
7
+ fixtures_folder = f"{fixtures_path}/cycle/{MODEL}/{MODEL_KEY}"
8
+
9
+
10
+ def test_run():
11
+ with open(f"{fixtures_folder}/cycle.jsonld", encoding='utf-8') as f:
12
+ cycle = json.load(f)
13
+
14
+ assert run(cycle) is True
15
+
16
+
17
+ def test_run_invalid():
18
+ with open(f"{fixtures_folder}/cycle-invalid.jsonld", encoding='utf-8') as f:
19
+ cycle = json.load(f)
20
+
21
+ assert not run(cycle)
@@ -148,3 +148,11 @@ def test_run_complete_above_80_percent():
148
148
 
149
149
  value = run(cycle)
150
150
  assert value == expected
151
+
152
+
153
+ def test_run_complete_2_products():
154
+ with open(f"{fixtures_folder}/complete-2-products/cycle.jsonld", encoding='utf-8') as f:
155
+ cycle = json.load(f)
156
+
157
+ value = run(cycle)
158
+ assert value == []
@@ -21,8 +21,8 @@ def test_should_run(mock_measurement, *args):
21
21
  should_run, *args = _should_run(cycle)
22
22
  assert not should_run
23
23
 
24
- # with country @id => run
25
- cycle['site'] = {'country': {'@id': 'GADM-AUS'}}
24
+ # is complete => run
25
+ cycle['completeness'] = {'fertiliser': True}
26
26
  should_run, *args = _should_run(cycle)
27
27
  assert should_run is True
28
28
 
@@ -5,9 +5,9 @@ from tests.utils import fixtures_path, fake_new_input
5
5
  from tests.models.ipcc2019.test_pastureGrass import MILK_YIELD_TERMS, WOOL_TERMS, TERMS_BY_ID
6
6
  from hestia_earth.models.ipcc2019.animal.pastureGrass import MODEL, MODEL_KEY, run
7
7
 
8
- class_path = f"hestia_earth.models.{MODEL}.{MODEL_KEY.replace('/', '.')}"
8
+ class_path = f"hestia_earth.models.{MODEL}.animal.{MODEL_KEY}"
9
9
  class_path_utils = f"hestia_earth.models.{MODEL}.pastureGrass_utils"
10
- fixtures_folder = f"{fixtures_path}/{MODEL}/{MODEL_KEY}"
10
+ fixtures_folder = f"{fixtures_path}/{MODEL}/animal/{MODEL_KEY}"
11
11
 
12
12
 
13
13
  def fake_download_hestia(term_id: str, *args): return TERMS_BY_ID[term_id]
@@ -1,27 +1,17 @@
1
1
  from functools import reduce
2
2
  import json
3
+ from os.path import isfile
3
4
  from pytest import mark
4
5
  from unittest.mock import patch
5
6
 
6
- from hestia_earth.schema import MeasurementMethodClassification
7
+ from hestia_earth.schema import EmissionMethodTier, MeasurementMethodClassification
7
8
 
8
9
  from hestia_earth.models.ipcc2019.co2ToAirSoilOrganicCarbonStockChangeManagementChange import (
9
- _calc_soc_stock_change,
10
- _convert_c_to_co2,
11
- _get_max_measurement_method,
12
- _get_min_measurement_method,
13
- _linear_interpolate_soc_stock,
14
- _nodes_to_soc_stock,
15
- MODEL,
16
- run,
17
- SocStock,
18
- TERM_ID
10
+ calc_soc_stock_change, calc_soc_stock_change_emission, convert_c_to_co2, lerp_soc_stocks, MODEL, run, TERM_ID,
11
+ SocStock, SocStockChange, SocStockChangeEmission
19
12
  )
20
13
 
21
- from tests.utils import (
22
- fake_new_emission,
23
- fixtures_path
24
- )
14
+ from tests.utils import fake_new_emission, fixtures_path
25
15
 
26
16
  class_path = f"hestia_earth.models.{MODEL}.{TERM_ID}"
27
17
  fixtures_folder = f"{fixtures_path}/{MODEL}/{TERM_ID}"
@@ -31,10 +21,20 @@ RUN_SCENARIOS = [
31
21
  ("overlapping-cycles", 4),
32
22
  ("complex-overlapping-cycles", 5),
33
23
  ("missing-measurement-dates", 3),
34
- ("no-organic-carbon-measurements", 1) # Closes issue #700
24
+ ("no-organic-carbon-measurements", 1), # Closes issue #700
25
+ ("non-consecutive-organic-carbon-measurements", 1), # Closes issue 827
26
+ ("multiple-method-classifications", 5) # Closes issue #764
35
27
  ]
36
28
  """List of (subfolder: str, num_cycles: int)."""
37
29
 
30
+
31
+ def _load_fixture(path: str, default=None):
32
+ if isfile(path):
33
+ with open(path, encoding="utf-8") as f:
34
+ return json.load(f)
35
+ return default
36
+
37
+
38
38
  RUN_PARAMS = reduce(
39
39
  lambda params, scenario: params + [(scenario[0], scenario[1], i) for i in range(scenario[1])],
40
40
  RUN_SCENARIOS,
@@ -45,163 +45,20 @@ RUN_PARAMS = reduce(
45
45
  RUN_IDS = [f"{param[0]}, cycle{param[2]}" for param in RUN_PARAMS]
46
46
 
47
47
 
48
- def _load_fixture(path: str):
49
- with open(path, encoding="utf-8") as f:
50
- fixture = json.load(f)
51
- return fixture
52
-
53
-
54
- def _get_site_path(subfolder: str) -> str:
55
- return f"{fixtures_folder}/{subfolder}/site.jsonld"
56
-
57
-
58
- def _get_cycle_path(subfolder: str, index: int) -> str:
59
- return f"{fixtures_folder}/{subfolder}/cycle{index}.jsonld"
60
-
61
-
62
- def _get_result_path(subfolder: str, index: int) -> str:
63
- return f"{fixtures_folder}/{subfolder}/result{index}.jsonld"
64
-
65
-
66
- def test_calc_soc_stock_change():
67
- START_SOC_STOCK = SocStock(20000, MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT)
68
- END_SOC_STOCK = SocStock(21000, MeasurementMethodClassification.TIER_1_MODEL)
69
- EXPECTED = SocStock(1000, MeasurementMethodClassification.TIER_1_MODEL)
70
-
71
- result = _calc_soc_stock_change(START_SOC_STOCK, END_SOC_STOCK)
72
- assert result == EXPECTED
73
-
74
-
75
- def test_convert_c_to_co2():
76
- KG_C = 1000
77
- EXPECTED = 3663.836163836164
78
-
79
- assert _convert_c_to_co2(KG_C) == EXPECTED
80
-
81
-
82
- def test_get_max_measurement_method():
83
- EXPECTED = MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT
84
- result = _get_max_measurement_method(
85
- MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT,
86
- MeasurementMethodClassification.TIER_2_MODEL,
87
- MeasurementMethodClassification.TIER_1_MODEL
88
- )
89
- assert result == EXPECTED
90
-
91
-
92
- def test_get_max_measurement_method_list():
93
- EXPECTED = MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT
94
- METHODS = [
95
- MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT,
96
- MeasurementMethodClassification.TIER_2_MODEL,
97
- MeasurementMethodClassification.TIER_1_MODEL
98
- ]
99
- result = _get_max_measurement_method(METHODS)
100
- assert result == EXPECTED
101
-
102
-
103
- def test_get_max_measurement_method_no_methods():
104
- EXPECTED = MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT
105
- result = _get_max_measurement_method()
106
- assert result == EXPECTED
107
-
108
-
109
- def test_get_min_measurement_method():
110
- EXPECTED = MeasurementMethodClassification.TIER_1_MODEL
111
- result = _get_min_measurement_method(
112
- MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT,
113
- MeasurementMethodClassification.TIER_2_MODEL,
114
- MeasurementMethodClassification.TIER_1_MODEL
115
- )
116
- assert result == EXPECTED
117
-
118
-
119
- def test_get_min_measurement_method_list():
120
- EXPECTED = MeasurementMethodClassification.TIER_1_MODEL
121
- METHODS = [
122
- MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT,
123
- MeasurementMethodClassification.TIER_2_MODEL,
124
- MeasurementMethodClassification.TIER_1_MODEL
125
- ]
126
- result = _get_min_measurement_method(METHODS)
127
- assert result == EXPECTED
128
-
129
-
130
- def test_get_min_measurement_method_no_methods():
131
- EXPECTED = MeasurementMethodClassification.UNSOURCED_ASSUMPTION
132
- result = _get_min_measurement_method()
133
- assert result == EXPECTED
134
-
135
-
136
- def test_linear_interpolate_soc_stock():
137
- START_YEAR = 2000
138
- END_YEAR = 2002
139
- START_SOC_STOCK = SocStock(20000, MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT)
140
- END_SOC_STOCK = SocStock(22000, MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT)
141
- TARGET_YEAR = 2001
142
- EXPECTED = SocStock(21000, MeasurementMethodClassification.TIER_1_MODEL)
143
-
144
- result = _linear_interpolate_soc_stock(
145
- START_YEAR, END_YEAR, START_SOC_STOCK, END_SOC_STOCK, TARGET_YEAR
146
- )
147
- assert result == EXPECTED
148
-
149
-
150
- def test_nodes_to_soc_stock_diff_dates():
151
- NODES = [
152
- {
153
- "value": [1000],
154
- "dates": ["2020"],
155
- "methodClassification": "modelled using other measurements"
156
- },
157
- {
158
- "value": [12000],
159
- "dates": ["2020-12-31"],
160
- "methodClassification": "tier 1 model"
161
- }
162
- ]
163
- EXPECTED = SocStock(12000, MeasurementMethodClassification.TIER_1_MODEL)
164
-
165
- assert _nodes_to_soc_stock(2020, NODES) == EXPECTED
166
-
167
-
168
- def test_nodes_to_soc_stock_same_dates():
169
- NODES = [
170
- {
171
- "value": [10000],
172
- "dates": ["2020-12-31"],
173
- "methodClassification": "modelled using other measurements"
174
- },
175
- {
176
- "value": [12000],
177
- "dates": ["2020-12-31"],
178
- "methodClassification": "tier 1 model"
179
- },
180
- {
181
- "value": [11000],
182
- "dates": ["2020-06-01"],
183
- "methodClassification": "on-site physical measurement"
184
- }
185
- ]
186
- EXPECTED = SocStock(10000, MeasurementMethodClassification.MODELLED_USING_OTHER_MEASUREMENTS)
187
-
188
- assert _nodes_to_soc_stock(2020, NODES) == EXPECTED
189
-
190
-
191
48
  @mark.parametrize("subfolder, num_cycles, cycle_index", RUN_PARAMS, ids=RUN_IDS)
192
49
  @patch(f"{class_path}._new_emission", side_effect=fake_new_emission)
193
50
  @patch(f"{class_path}.related_cycles")
194
- @patch(f"{class_path}.get_site")
51
+ @patch(f"{class_path}._get_site")
195
52
  def test_run(_get_site_mock, related_cycles_mock, _new_emission_mock, subfolder, num_cycles, cycle_index):
196
53
  """
197
54
  Test `run` function for each cycle in each scenario.
198
55
  """
199
- site = _load_fixture(_get_site_path(subfolder))
200
- cycle = _load_fixture(_get_cycle_path(subfolder, cycle_index))
201
- expected = _load_fixture(_get_result_path(subfolder, cycle_index))
56
+ site = _load_fixture(f"{fixtures_folder}/{subfolder}/site.jsonld")
57
+ cycle = _load_fixture(f"{fixtures_folder}/{subfolder}/cycle{cycle_index}.jsonld")
58
+ expected = _load_fixture(f"{fixtures_folder}/{subfolder}/result{cycle_index}.jsonld", default=[])
202
59
 
203
60
  cycles = [
204
- _load_fixture(_get_cycle_path(subfolder, i)) for i in range(num_cycles)
61
+ _load_fixture(f"{fixtures_folder}/{subfolder}/cycle{i}.jsonld") for i in range(num_cycles)
205
62
  ]
206
63
 
207
64
  _get_site_mock.return_value = site
@@ -213,7 +70,7 @@ def test_run(_get_site_mock, related_cycles_mock, _new_emission_mock, subfolder,
213
70
 
214
71
  @patch(f"{class_path}._new_emission", side_effect=fake_new_emission)
215
72
  @patch(f"{class_path}.related_cycles")
216
- @patch(f"{class_path}.get_site")
73
+ @patch(f"{class_path}._get_site")
217
74
  def test_run_empty(_get_site_mock, related_cycles_mock, _new_emission_mock):
218
75
  """
219
76
  Test `run` function for each cycle in each scenario.
@@ -226,3 +83,36 @@ def test_run_empty(_get_site_mock, related_cycles_mock, _new_emission_mock):
226
83
 
227
84
  result = run(CYCLE)
228
85
  assert result == EXPECTED
86
+
87
+
88
+ def test_convert_c_to_co2():
89
+ KG_C = 1000
90
+ EXPECTED = 3663.836163836164
91
+ assert convert_c_to_co2(KG_C) == EXPECTED
92
+
93
+
94
+ def test_linear_interpolate_soc_stock():
95
+ START = SocStock(20000, "2000-12-31", MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT)
96
+ END = SocStock(22000, "2002-12-31", MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT)
97
+ TARGET_DATE = "2001-12-31"
98
+ EXPECTED = SocStock(21000, "2001-12-31", MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT)
99
+
100
+ result = lerp_soc_stocks(START, END, TARGET_DATE)
101
+ assert result == EXPECTED
102
+
103
+
104
+ def test_calc_soc_stock_change():
105
+ START = SocStock(20000, "2000", MeasurementMethodClassification.ON_SITE_PHYSICAL_MEASUREMENT)
106
+ END = SocStock(21000, "2001", MeasurementMethodClassification.TIER_1_MODEL)
107
+ EXPECTED = SocStockChange(1000, "2000", "2001", MeasurementMethodClassification.TIER_1_MODEL)
108
+
109
+ result = calc_soc_stock_change(START, END)
110
+ assert result == EXPECTED
111
+
112
+
113
+ def test_calc_soc_stock_change_emission():
114
+ SOC_STOCK_CHANGE = SocStockChange(-1000, "2000", "2001", MeasurementMethodClassification.TIER_1_MODEL)
115
+ EXPECTED = SocStockChangeEmission(3663.836163836164, "2000", "2001", EmissionMethodTier.TIER_1)
116
+
117
+ result = calc_soc_stock_change_emission(SOC_STOCK_CHANGE)
118
+ assert result == EXPECTED