hestia-earth-models 0.74.10__py3-none-any.whl → 0.74.12__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 (410) hide show
  1. hestia_earth/models/agribalyse2016/fuelElectricity.py +1 -2
  2. hestia_earth/models/agribalyse2016/machineryInfrastructureDepreciatedAmountPerCycle.py +1 -7
  3. hestia_earth/models/akagiEtAl2011/utils.py +2 -6
  4. hestia_earth/models/aware/scarcityWeightedWaterUse.py +1 -4
  5. hestia_earth/models/aware2_0/scarcityWeightedWaterUse.py +1 -4
  6. hestia_earth/models/chaudharyBrooks2018/damageToTerrestrialEcosystemsLandOccupation.py +1 -4
  7. hestia_earth/models/chaudharyBrooks2018/damageToTerrestrialEcosystemsLandTransformation.py +1 -4
  8. hestia_earth/models/chaudharyBrooks2018/damageToTerrestrialEcosystemsTotalLandUseEffects.py +1 -4
  9. hestia_earth/models/cml2001Baseline/abioticResourceDepletionFossilFuels.py +1 -4
  10. hestia_earth/models/cml2001Baseline/abioticResourceDepletionMineralsAndMetals.py +1 -4
  11. hestia_earth/models/cml2001Baseline/eutrophicationPotentialExcludingFate.py +1 -4
  12. hestia_earth/models/cml2001Baseline/resourceUseEnergyDepletionDuringCycle.py +12 -10
  13. hestia_earth/models/cml2001Baseline/resourceUseMineralsAndMetalsDuringCycle.py +5 -5
  14. hestia_earth/models/cml2001Baseline/terrestrialAcidificationPotentialIncludingFateAverageEurope.py +1 -7
  15. hestia_earth/models/cml2001NonBaseline/eutrophicationPotentialIncludingFateAverageEurope.py +1 -7
  16. hestia_earth/models/cml2001NonBaseline/terrestrialAcidificationPotentialExcludingFate.py +1 -7
  17. hestia_earth/models/config/ImpactAssessment.json +12 -6
  18. hestia_earth/models/config/Site.json +16 -0
  19. hestia_earth/models/cycle/aboveGroundCropResidueTotal.py +1 -6
  20. hestia_earth/models/cycle/practice/landCover.py +9 -9
  21. hestia_earth/models/dammgen2009/noxToAirExcreta.py +1 -2
  22. hestia_earth/models/deRuijterEtAl2010/nh3ToAirCropResidueDecomposition.py +1 -2
  23. hestia_earth/models/ecoalimV9/cycle.py +1 -2
  24. hestia_earth/models/ecoalimV9/impact_assessment.py +10 -3
  25. hestia_earth/models/ecoinventV3/cycle.py +1 -2
  26. hestia_earth/models/ecoinventV3AndEmberClimate/cycle.py +1 -2
  27. hestia_earth/models/edip2003/ozoneDepletionPotential.py +1 -7
  28. hestia_earth/models/emepEea2019/utils.py +1 -2
  29. hestia_earth/models/emissionNotRelevant/__init__.py +2 -2
  30. hestia_earth/models/environmentalFootprintV3_1/environmentalFootprintSingleOverallScore.py +1 -4
  31. hestia_earth/models/environmentalFootprintV3_1/freshwaterEcotoxicityPotentialCtue.py +1 -7
  32. hestia_earth/models/environmentalFootprintV3_1/marineEutrophicationPotential.py +1 -7
  33. hestia_earth/models/environmentalFootprintV3_1/photochemicalOzoneCreationPotentialHumanHealthNmvocEq.py +1 -7
  34. hestia_earth/models/environmentalFootprintV3_1/scarcityWeightedWaterUse.py +1 -7
  35. hestia_earth/models/environmentalFootprintV3_1/soilQualityIndexLandOccupation.py +2 -7
  36. hestia_earth/models/environmentalFootprintV3_1/soilQualityIndexLandTransformation.py +2 -7
  37. hestia_earth/models/environmentalFootprintV3_1/soilQualityIndexTotalLandUseEffects.py +2 -7
  38. hestia_earth/models/epa2014/no3ToGroundwaterExcreta.py +1 -2
  39. hestia_earth/models/fantkeEtAl2016/damageToHumanHealthParticulateMatterFormation.py +2 -11
  40. hestia_earth/models/faostat2018/liveweightPerHead.py +11 -7
  41. hestia_earth/models/faostat2018/product/price.py +9 -5
  42. hestia_earth/models/faostat2018/seed.py +5 -12
  43. hestia_earth/models/faostat2018/utils.py +14 -6
  44. hestia_earth/models/frischknechtEtAl2000/ionisingRadiationKbqU235Eq.py +4 -8
  45. hestia_earth/models/geospatialDatabase/altitude.py +1 -2
  46. hestia_earth/models/geospatialDatabase/clayContent.py +1 -2
  47. hestia_earth/models/geospatialDatabase/croppingIntensity.py +1 -3
  48. hestia_earth/models/geospatialDatabase/drainageClass.py +1 -2
  49. hestia_earth/models/geospatialDatabase/ecoClimateZone.py +1 -2
  50. hestia_earth/models/geospatialDatabase/erodibility.py +1 -2
  51. hestia_earth/models/geospatialDatabase/heavyWinterPrecipitation.py +1 -2
  52. hestia_earth/models/geospatialDatabase/histosol.py +1 -2
  53. hestia_earth/models/geospatialDatabase/longFallowRatio.py +1 -3
  54. hestia_earth/models/geospatialDatabase/nutrientLossToAquaticEnvironment.py +1 -2
  55. hestia_earth/models/geospatialDatabase/organicCarbonPerKgSoil.py +1 -2
  56. hestia_earth/models/geospatialDatabase/potentialEvapotranspirationAnnual.py +1 -2
  57. hestia_earth/models/geospatialDatabase/potentialEvapotranspirationLongTermAnnualMean.py +1 -2
  58. hestia_earth/models/geospatialDatabase/potentialEvapotranspirationMonthly.py +1 -2
  59. hestia_earth/models/geospatialDatabase/precipitationAnnual.py +1 -2
  60. hestia_earth/models/geospatialDatabase/precipitationLongTermAnnualMean.py +1 -2
  61. hestia_earth/models/geospatialDatabase/precipitationMonthly.py +1 -2
  62. hestia_earth/models/geospatialDatabase/sandContent.py +1 -2
  63. hestia_earth/models/geospatialDatabase/siltContent.py +1 -2
  64. hestia_earth/models/geospatialDatabase/slope.py +1 -2
  65. hestia_earth/models/geospatialDatabase/slopeLength.py +1 -2
  66. hestia_earth/models/geospatialDatabase/soilPh.py +1 -2
  67. hestia_earth/models/geospatialDatabase/temperatureAnnual.py +1 -2
  68. hestia_earth/models/geospatialDatabase/temperatureLongTermAnnualMean.py +1 -2
  69. hestia_earth/models/geospatialDatabase/temperatureMonthly.py +1 -2
  70. hestia_earth/models/geospatialDatabase/totalNitrogenPerKgSoil.py +1 -2
  71. hestia_earth/models/geospatialDatabase/totalPhosphorusPerKgSoil.py +1 -2
  72. hestia_earth/models/geospatialDatabase/waterDepth.py +1 -2
  73. hestia_earth/models/hestia/aboveGroundCropResidue.py +1 -2
  74. hestia_earth/models/hestia/aboveGroundCropResidueTotal.py +1 -6
  75. hestia_earth/models/hestia/brackishWater.py +1 -2
  76. hestia_earth/models/hestia/cationExchangeCapacityPerKgSoil.py +1 -2
  77. hestia_earth/models/hestia/cropResidueManagement.py +1 -2
  78. hestia_earth/models/hestia/croppingIntensity.py +1 -7
  79. hestia_earth/models/hestia/default_emissions.py +3 -5
  80. hestia_earth/models/hestia/default_resourceUse.py +4 -11
  81. hestia_earth/models/hestia/excretaKgMass.py +9 -6
  82. hestia_earth/models/hestia/excretaKgN.py +8 -7
  83. hestia_earth/models/hestia/excretaKgVs.py +8 -7
  84. hestia_earth/models/hestia/feedConversionRatio/__init__.py +5 -7
  85. hestia_earth/models/hestia/flowingWater.py +1 -2
  86. hestia_earth/models/hestia/freshWater.py +1 -2
  87. hestia_earth/models/hestia/histosol.py +1 -2
  88. hestia_earth/models/hestia/inorganicFertiliser.py +2 -14
  89. hestia_earth/models/hestia/irrigatedTypeUnspecified.py +1 -7
  90. hestia_earth/models/hestia/landCover.py +192 -911
  91. hestia_earth/models/hestia/landCover_utils.py +769 -0
  92. hestia_earth/models/hestia/landOccupationDuringCycle.py +1 -2
  93. hestia_earth/models/hestia/liveAnimal.py +1 -3
  94. hestia_earth/models/hestia/longFallowRatio.py +1 -7
  95. hestia_earth/models/hestia/management.py +14 -8
  96. hestia_earth/models/hestia/materialAndSubstrate.py +1 -2
  97. hestia_earth/models/hestia/milkYield.py +2 -12
  98. hestia_earth/models/hestia/netPrimaryProduction.py +1 -2
  99. hestia_earth/models/hestia/organicCarbonPerHa.py +1 -2
  100. hestia_earth/models/hestia/pToSurfaceWaterAquacultureSystems.py +2 -4
  101. hestia_earth/models/hestia/pastureGrass.py +3 -4
  102. hestia_earth/models/hestia/pastureSystem.py +1 -7
  103. hestia_earth/models/hestia/potentialEvapotranspirationAnnual.py +1 -2
  104. hestia_earth/models/hestia/potentialEvapotranspirationMonthly.py +1 -2
  105. hestia_earth/models/hestia/precipitationAnnual.py +1 -2
  106. hestia_earth/models/hestia/precipitationMonthly.py +1 -2
  107. hestia_earth/models/hestia/rainfallAnnual.py +1 -2
  108. hestia_earth/models/hestia/rainfallMonthly.py +1 -2
  109. hestia_earth/models/hestia/residueBurnt.py +1 -7
  110. hestia_earth/models/hestia/residueIncorporated.py +1 -7
  111. hestia_earth/models/hestia/residueLeftOnField.py +1 -7
  112. hestia_earth/models/hestia/residueRemoved.py +3 -8
  113. hestia_earth/models/hestia/resourceUse_utils.py +4 -20
  114. hestia_earth/models/hestia/salineWater.py +1 -2
  115. hestia_earth/models/hestia/seed_emissions.py +5 -6
  116. hestia_earth/models/hestia/slope.py +44 -0
  117. hestia_earth/models/hestia/slopeLength.py +44 -0
  118. hestia_earth/models/hestia/soilMeasurement.py +1 -2
  119. hestia_earth/models/hestia/stockingDensityAnimalHousingAverage.py +1 -7
  120. hestia_earth/models/hestia/temperatureAnnual.py +1 -2
  121. hestia_earth/models/hestia/temperatureMonthly.py +1 -2
  122. hestia_earth/models/hestia/totalNitrogenPerKgSoil.py +1 -2
  123. hestia_earth/models/hestia/unknownPreSeasonWaterRegime.py +1 -7
  124. hestia_earth/models/hestia/utils.py +5 -5
  125. hestia_earth/models/hestia/waterDepth.py +1 -2
  126. hestia_earth/models/hestia/waterSalinity.py +1 -2
  127. hestia_earth/models/impact_assessment/emissions.py +8 -9
  128. hestia_earth/models/impact_assessment/post_checks/cycle.py +1 -1
  129. hestia_earth/models/impact_assessment/pre_checks/cycle.py +1 -1
  130. hestia_earth/models/ipcc2006/aboveGroundCropResidueRemoved.py +1 -3
  131. hestia_earth/models/ipcc2006/aboveGroundCropResidueTotal.py +1 -3
  132. hestia_earth/models/ipcc2006/belowGroundCropResidue.py +1 -3
  133. hestia_earth/models/ipcc2006/n2OToAirCropResidueDecompositionDirect.py +2 -6
  134. hestia_earth/models/ipcc2006/n2OToAirCropResidueDecompositionIndirect.py +1 -2
  135. hestia_earth/models/ipcc2006/n2OToAirExcretaDirect.py +1 -2
  136. hestia_earth/models/ipcc2006/n2OToAirExcretaIndirect.py +1 -2
  137. hestia_earth/models/ipcc2006/n2OToAirInorganicFertiliserDirect.py +1 -2
  138. hestia_earth/models/ipcc2006/n2OToAirInorganicFertiliserIndirect.py +1 -2
  139. hestia_earth/models/ipcc2006/n2OToAirOrganicFertiliserDirect.py +1 -2
  140. hestia_earth/models/ipcc2006/n2OToAirOrganicFertiliserIndirect.py +1 -2
  141. hestia_earth/models/ipcc2013ExcludingFeedbacks/gwp100.py +1 -7
  142. hestia_earth/models/ipcc2013IncludingFeedbacks/gwp100.py +1 -7
  143. hestia_earth/models/ipcc2019/aboveGroundBiomass.py +1 -1
  144. hestia_earth/models/ipcc2019/aboveGroundCropResidueTotal.py +1 -3
  145. hestia_earth/models/ipcc2019/animal/milkYieldPerAnimal.py +3 -7
  146. hestia_earth/models/ipcc2019/animal/pastureGrass.py +1 -2
  147. hestia_earth/models/ipcc2019/belowGroundBiomass.py +1 -1
  148. hestia_earth/models/ipcc2019/belowGroundCropResidue.py +1 -3
  149. hestia_earth/models/ipcc2019/biocharOrganicCarbonPerHa.py +1 -1
  150. hestia_earth/models/ipcc2019/ch4ToAirAquacultureSystems.py +2 -6
  151. hestia_earth/models/ipcc2019/ch4ToAirEntericFermentation.py +2 -12
  152. hestia_earth/models/ipcc2019/ch4ToAirExcreta.py +1 -2
  153. hestia_earth/models/ipcc2019/ch4ToAirFloodedRice.py +2 -10
  154. hestia_earth/models/ipcc2019/ch4ToAirOrganicSoilCultivation.py +1 -1
  155. hestia_earth/models/ipcc2019/co2ToAirAboveGroundBiomassStockChange.py +1 -1
  156. hestia_earth/models/ipcc2019/co2ToAirBelowGroundBiomassStockChange.py +1 -1
  157. hestia_earth/models/ipcc2019/co2ToAirBiocharStockChange.py +1 -1
  158. hestia_earth/models/ipcc2019/co2ToAirLimeHydrolysis.py +1 -2
  159. hestia_earth/models/ipcc2019/co2ToAirOrganicSoilCultivation.py +1 -1
  160. hestia_earth/models/ipcc2019/co2ToAirSoilOrganicCarbonStockChange.py +1 -1
  161. hestia_earth/models/ipcc2019/co2ToAirUreaHydrolysis.py +1 -2
  162. hestia_earth/models/ipcc2019/croppingDuration.py +1 -2
  163. hestia_earth/models/ipcc2019/n2OToAirCropResidueBurningDirect.py +1 -2
  164. hestia_earth/models/ipcc2019/n2OToAirCropResidueDecompositionDirect.py +2 -7
  165. hestia_earth/models/ipcc2019/n2OToAirExcretaDirect.py +1 -2
  166. hestia_earth/models/ipcc2019/n2OToAirInorganicFertiliserDirect.py +2 -7
  167. hestia_earth/models/ipcc2019/n2OToAirOrganicFertiliserDirect.py +2 -7
  168. hestia_earth/models/ipcc2019/n2OToAirOrganicSoilCultivationDirect.py +2 -7
  169. hestia_earth/models/ipcc2019/n2OToAir_indirect_emissions_utils.py +3 -9
  170. hestia_earth/models/ipcc2019/nh3ToAirInorganicFertiliser.py +2 -6
  171. hestia_earth/models/ipcc2019/nh3ToAirOrganicFertiliser.py +2 -6
  172. hestia_earth/models/ipcc2019/no3ToGroundwaterCropResidueDecomposition.py +2 -7
  173. hestia_earth/models/ipcc2019/no3ToGroundwaterExcreta.py +2 -8
  174. hestia_earth/models/ipcc2019/no3ToGroundwaterInorganicFertiliser.py +2 -7
  175. hestia_earth/models/ipcc2019/no3ToGroundwaterOrganicFertiliser.py +2 -7
  176. hestia_earth/models/ipcc2019/nonCo2EmissionsToAirNaturalVegetationBurning.py +1 -1
  177. hestia_earth/models/ipcc2019/noxToAirInorganicFertiliser.py +2 -6
  178. hestia_earth/models/ipcc2019/noxToAirOrganicFertiliser.py +2 -6
  179. hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_1.py +1 -1
  180. hestia_earth/models/ipcc2019/organicCarbonPerHa_tier_2.py +1 -1
  181. hestia_earth/models/ipcc2019/pastureGrass.py +1 -2
  182. hestia_earth/models/ipcc2021/gwp100.py +2 -11
  183. hestia_earth/models/jarvisAndPain1994/n2ToAirExcreta.py +1 -2
  184. hestia_earth/models/koble2014/utils.py +1 -3
  185. hestia_earth/models/lcImpactAllEffects100Years/damageToFreshwaterEcosystemsClimateChange.py +1 -7
  186. hestia_earth/models/lcImpactAllEffects100Years/damageToFreshwaterEcosystemsFreshwaterEcotoxicity.py +1 -7
  187. hestia_earth/models/lcImpactAllEffects100Years/damageToFreshwaterEcosystemsFreshwaterEutrophication.py +1 -7
  188. hestia_earth/models/lcImpactAllEffects100Years/damageToFreshwaterEcosystemsPdfYear.py +1 -7
  189. hestia_earth/models/lcImpactAllEffects100Years/damageToFreshwaterEcosystemsWaterStress.py +1 -7
  190. hestia_earth/models/lcImpactAllEffects100Years/damageToHumanHealth.py +1 -7
  191. hestia_earth/models/lcImpactAllEffects100Years/damageToHumanHealthClimateChange.py +1 -7
  192. hestia_earth/models/lcImpactAllEffects100Years/damageToHumanHealthHumanToxicityCancerogenic.py +1 -7
  193. hestia_earth/models/lcImpactAllEffects100Years/damageToHumanHealthHumanToxicityNonCancerogenic.py +1 -7
  194. hestia_earth/models/lcImpactAllEffects100Years/damageToHumanHealthParticulateMatterFormation.py +1 -7
  195. hestia_earth/models/lcImpactAllEffects100Years/damageToHumanHealthPhotochemicalOzoneFormation.py +1 -7
  196. hestia_earth/models/lcImpactAllEffects100Years/damageToHumanHealthStratosphericOzoneDepletion.py +1 -7
  197. hestia_earth/models/lcImpactAllEffects100Years/damageToHumanHealthWaterStress.py +1 -7
  198. hestia_earth/models/lcImpactAllEffects100Years/damageToMarineEcosystemsMarineEcotoxicity.py +1 -7
  199. hestia_earth/models/lcImpactAllEffects100Years/damageToMarineEcosystemsMarineEutrophication.py +1 -7
  200. hestia_earth/models/lcImpactAllEffects100Years/damageToMarineEcosystemsPdfYear.py +1 -7
  201. hestia_earth/models/lcImpactAllEffects100Years/damageToTerrestrialEcosystemsClimateChange.py +1 -7
  202. hestia_earth/models/lcImpactAllEffects100Years/damageToTerrestrialEcosystemsPdfYear.py +1 -7
  203. hestia_earth/models/lcImpactAllEffects100Years/damageToTerrestrialEcosystemsPhotochemicalOzoneFormation.py +1 -7
  204. hestia_earth/models/lcImpactAllEffects100Years/damageToTerrestrialEcosystemsTerrestrialAcidification.py +1 -7
  205. hestia_earth/models/lcImpactAllEffects100Years/damageToTerrestrialEcosystemsTerrestrialEcotoxicity.py +1 -7
  206. hestia_earth/models/lcImpactAllEffectsInfinite/damageToFreshwaterEcosystemsClimateChange.py +1 -7
  207. hestia_earth/models/lcImpactAllEffectsInfinite/damageToFreshwaterEcosystemsFreshwaterEcotoxicity.py +1 -7
  208. hestia_earth/models/lcImpactAllEffectsInfinite/damageToFreshwaterEcosystemsFreshwaterEutrophication.py +1 -7
  209. hestia_earth/models/lcImpactAllEffectsInfinite/damageToFreshwaterEcosystemsPdfYear.py +1 -7
  210. hestia_earth/models/lcImpactAllEffectsInfinite/damageToFreshwaterEcosystemsWaterStress.py +1 -7
  211. hestia_earth/models/lcImpactAllEffectsInfinite/damageToHumanHealth.py +1 -7
  212. hestia_earth/models/lcImpactAllEffectsInfinite/damageToHumanHealthClimateChange.py +1 -7
  213. hestia_earth/models/lcImpactAllEffectsInfinite/damageToHumanHealthHumanToxicityCancerogenic.py +1 -7
  214. hestia_earth/models/lcImpactAllEffectsInfinite/damageToHumanHealthHumanToxicityNonCancerogenic.py +1 -7
  215. hestia_earth/models/lcImpactAllEffectsInfinite/damageToHumanHealthParticulateMatterFormation.py +1 -7
  216. hestia_earth/models/lcImpactAllEffectsInfinite/damageToHumanHealthPhotochemicalOzoneFormation.py +1 -7
  217. hestia_earth/models/lcImpactAllEffectsInfinite/damageToHumanHealthStratosphericOzoneDepletion.py +1 -7
  218. hestia_earth/models/lcImpactAllEffectsInfinite/damageToHumanHealthWaterStress.py +1 -7
  219. hestia_earth/models/lcImpactAllEffectsInfinite/damageToMarineEcosystemsMarineEcotoxicity.py +1 -7
  220. hestia_earth/models/lcImpactAllEffectsInfinite/damageToMarineEcosystemsMarineEutrophication.py +1 -7
  221. hestia_earth/models/lcImpactAllEffectsInfinite/damageToMarineEcosystemsPdfYear.py +1 -7
  222. hestia_earth/models/lcImpactAllEffectsInfinite/damageToTerrestrialEcosystemsClimateChange.py +1 -7
  223. hestia_earth/models/lcImpactAllEffectsInfinite/damageToTerrestrialEcosystemsPdfYear.py +1 -7
  224. hestia_earth/models/lcImpactAllEffectsInfinite/damageToTerrestrialEcosystemsPhotochemicalOzoneFormation.py +1 -7
  225. hestia_earth/models/lcImpactAllEffectsInfinite/damageToTerrestrialEcosystemsTerrestrialAcidification.py +1 -7
  226. hestia_earth/models/lcImpactAllEffectsInfinite/damageToTerrestrialEcosystemsTerrestrialEcotoxicity.py +1 -7
  227. hestia_earth/models/lcImpactCertainEffects100Years/damageToFreshwaterEcosystemsFreshwaterEcotoxicity.py +1 -7
  228. hestia_earth/models/lcImpactCertainEffects100Years/damageToFreshwaterEcosystemsFreshwaterEutrophication.py +1 -7
  229. hestia_earth/models/lcImpactCertainEffects100Years/damageToFreshwaterEcosystemsPdfYear.py +1 -7
  230. hestia_earth/models/lcImpactCertainEffects100Years/damageToFreshwaterEcosystemsWaterStress.py +1 -7
  231. hestia_earth/models/lcImpactCertainEffects100Years/damageToHumanHealth.py +1 -7
  232. hestia_earth/models/lcImpactCertainEffects100Years/damageToHumanHealthClimateChange.py +1 -7
  233. hestia_earth/models/lcImpactCertainEffects100Years/damageToHumanHealthHumanToxicityCancerogenic.py +1 -7
  234. hestia_earth/models/lcImpactCertainEffects100Years/damageToHumanHealthHumanToxicityNonCancerogenic.py +1 -7
  235. hestia_earth/models/lcImpactCertainEffects100Years/damageToHumanHealthParticulateMatterFormation.py +1 -7
  236. hestia_earth/models/lcImpactCertainEffects100Years/damageToHumanHealthPhotochemicalOzoneFormation.py +1 -7
  237. hestia_earth/models/lcImpactCertainEffects100Years/damageToHumanHealthStratosphericOzoneDepletion.py +1 -7
  238. hestia_earth/models/lcImpactCertainEffects100Years/damageToHumanHealthWaterStress.py +1 -7
  239. hestia_earth/models/lcImpactCertainEffects100Years/damageToMarineEcosystemsMarineEcotoxicity.py +1 -7
  240. hestia_earth/models/lcImpactCertainEffects100Years/damageToMarineEcosystemsMarineEutrophication.py +1 -7
  241. hestia_earth/models/lcImpactCertainEffects100Years/damageToMarineEcosystemsPdfYear.py +1 -7
  242. hestia_earth/models/lcImpactCertainEffects100Years/damageToTerrestrialEcosystemsClimateChange.py +1 -7
  243. hestia_earth/models/lcImpactCertainEffects100Years/damageToTerrestrialEcosystemsPdfYear.py +1 -7
  244. hestia_earth/models/lcImpactCertainEffects100Years/damageToTerrestrialEcosystemsPhotochemicalOzoneFormation.py +1 -7
  245. hestia_earth/models/lcImpactCertainEffects100Years/damageToTerrestrialEcosystemsTerrestrialAcidification.py +1 -7
  246. hestia_earth/models/lcImpactCertainEffects100Years/damageToTerrestrialEcosystemsTerrestrialEcotoxicity.py +1 -7
  247. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToFreshwaterEcosystemsFreshwaterEcotoxicity.py +1 -7
  248. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToFreshwaterEcosystemsFreshwaterEutrophication.py +1 -7
  249. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToFreshwaterEcosystemsPdfYear.py +1 -7
  250. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToFreshwaterEcosystemsWaterStress.py +1 -7
  251. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToHumanHealth.py +1 -7
  252. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToHumanHealthClimateChange.py +1 -7
  253. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToHumanHealthHumanToxicityCancerogenic.py +1 -7
  254. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToHumanHealthHumanToxicityNonCancerogenic.py +1 -7
  255. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToHumanHealthParticulateMatterFormation.py +1 -7
  256. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToHumanHealthPhotochemicalOzoneFormation.py +1 -7
  257. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToHumanHealthStratosphericOzoneDepletion.py +1 -7
  258. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToHumanHealthWaterStress.py +1 -7
  259. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToMarineEcosystemsMarineEcotoxicity.py +1 -7
  260. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToMarineEcosystemsMarineEutrophication.py +1 -7
  261. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToMarineEcosystemsPdfYear.py +1 -7
  262. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToTerrestrialEcosystemsClimateChange.py +1 -7
  263. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToTerrestrialEcosystemsPdfYear.py +1 -7
  264. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToTerrestrialEcosystemsPhotochemicalOzoneFormation.py +1 -7
  265. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToTerrestrialEcosystemsTerrestrialAcidification.py +1 -7
  266. hestia_earth/models/lcImpactCertainEffectsInfinite/damageToTerrestrialEcosystemsTerrestrialEcotoxicity.py +1 -7
  267. hestia_earth/models/linkedImpactAssessment/emissions.py +4 -6
  268. hestia_earth/models/linkedImpactAssessment/utils.py +4 -6
  269. hestia_earth/models/mocking/search-results.json +1 -1
  270. hestia_earth/models/pooreNemecek2018/aboveGroundCropResidueTotal.py +1 -3
  271. hestia_earth/models/pooreNemecek2018/belowGroundCropResidue.py +1 -3
  272. hestia_earth/models/pooreNemecek2018/ch4ToAirAquacultureSystems.py +1 -2
  273. hestia_earth/models/pooreNemecek2018/excretaKgN.py +3 -4
  274. hestia_earth/models/pooreNemecek2018/excretaKgVs.py +4 -4
  275. hestia_earth/models/pooreNemecek2018/freshwaterWithdrawalsDuringCycle.py +3 -9
  276. hestia_earth/models/pooreNemecek2018/landOccupationDuringCycle.py +3 -7
  277. hestia_earth/models/pooreNemecek2018/longFallowDuration.py +1 -7
  278. hestia_earth/models/pooreNemecek2018/n2OToAirAquacultureSystemsDirect.py +1 -2
  279. hestia_earth/models/pooreNemecek2018/n2ToAirAquacultureSystems.py +1 -2
  280. hestia_earth/models/pooreNemecek2018/nh3ToAirAquacultureSystems.py +1 -2
  281. hestia_earth/models/pooreNemecek2018/no3ToGroundwaterCropResidueDecomposition.py +1 -2
  282. hestia_earth/models/pooreNemecek2018/no3ToGroundwaterExcreta.py +1 -2
  283. hestia_earth/models/pooreNemecek2018/no3ToGroundwaterInorganicFertiliser.py +1 -2
  284. hestia_earth/models/pooreNemecek2018/no3ToGroundwaterOrganicFertiliser.py +1 -2
  285. hestia_earth/models/pooreNemecek2018/no3ToGroundwaterSoilFlux_utils.py +1 -2
  286. hestia_earth/models/pooreNemecek2018/noxToAirAquacultureSystems.py +1 -2
  287. hestia_earth/models/pooreNemecek2018/nurseryDensity.py +1 -7
  288. hestia_earth/models/pooreNemecek2018/nurseryDuration.py +1 -7
  289. hestia_earth/models/pooreNemecek2018/plantationDensity.py +1 -7
  290. hestia_earth/models/pooreNemecek2018/plantationLifespan.py +1 -7
  291. hestia_earth/models/pooreNemecek2018/plantationProductiveLifespan.py +1 -7
  292. hestia_earth/models/pooreNemecek2018/rotationDuration.py +1 -7
  293. hestia_earth/models/pooreNemecek2018/saplingsDepreciatedAmountPerCycle.py +1 -7
  294. hestia_earth/models/poschEtAl2008/terrestrialAcidificationPotentialAccumulatedExceedance.py +1 -7
  295. hestia_earth/models/poschEtAl2008/terrestrialEutrophicationPotentialAccumulatedExceedance.py +1 -7
  296. hestia_earth/models/recipe2016Egalitarian/damageToFreshwaterEcosystemsSpeciesYear.py +1 -7
  297. hestia_earth/models/recipe2016Egalitarian/damageToHumanHealth.py +1 -7
  298. hestia_earth/models/recipe2016Egalitarian/damageToMarineEcosystemsSpeciesYear.py +1 -7
  299. hestia_earth/models/recipe2016Egalitarian/damageToResourceAvailability.py +1 -7
  300. hestia_earth/models/recipe2016Egalitarian/damageToTerrestrialEcosystemsSpeciesYear.py +1 -7
  301. hestia_earth/models/recipe2016Egalitarian/ecosystemDamageOzoneFormation.py +1 -7
  302. hestia_earth/models/recipe2016Egalitarian/fossilResourceScarcity.py +1 -7
  303. hestia_earth/models/recipe2016Egalitarian/freshwaterAquaticEcotoxicityPotential14Dcbeq.py +1 -7
  304. hestia_earth/models/recipe2016Egalitarian/freshwaterEutrophicationPotential.py +1 -7
  305. hestia_earth/models/recipe2016Egalitarian/humanCarcinogenicToxicity.py +1 -7
  306. hestia_earth/models/recipe2016Egalitarian/humanDamageOzoneFormation.py +2 -10
  307. hestia_earth/models/recipe2016Egalitarian/humanNonCarcinogenicToxicity.py +1 -7
  308. hestia_earth/models/recipe2016Egalitarian/marineAquaticEcotoxicityPotential14Dcbeq.py +1 -7
  309. hestia_earth/models/recipe2016Egalitarian/marineEutrophicationPotential.py +1 -7
  310. hestia_earth/models/recipe2016Egalitarian/ozoneDepletionPotential.py +1 -7
  311. hestia_earth/models/recipe2016Egalitarian/terrestrialAcidificationPotential.py +1 -7
  312. hestia_earth/models/recipe2016Egalitarian/terrestrialEcotoxicityPotential14Dcbeq.py +1 -7
  313. hestia_earth/models/recipe2016Hierarchist/damageToFreshwaterEcosystemsSpeciesYear.py +1 -7
  314. hestia_earth/models/recipe2016Hierarchist/damageToHumanHealth.py +1 -7
  315. hestia_earth/models/recipe2016Hierarchist/damageToMarineEcosystemsSpeciesYear.py +1 -7
  316. hestia_earth/models/recipe2016Hierarchist/damageToResourceAvailability.py +1 -7
  317. hestia_earth/models/recipe2016Hierarchist/damageToTerrestrialEcosystemsSpeciesYear.py +1 -7
  318. hestia_earth/models/recipe2016Hierarchist/ecosystemDamageOzoneFormation.py +2 -10
  319. hestia_earth/models/recipe2016Hierarchist/fossilResourceScarcity.py +1 -7
  320. hestia_earth/models/recipe2016Hierarchist/freshwaterAquaticEcotoxicityPotential14Dcbeq.py +1 -7
  321. hestia_earth/models/recipe2016Hierarchist/freshwaterEutrophicationPotential.py +1 -7
  322. hestia_earth/models/recipe2016Hierarchist/humanCarcinogenicToxicity.py +1 -7
  323. hestia_earth/models/recipe2016Hierarchist/humanDamageOzoneFormation.py +2 -10
  324. hestia_earth/models/recipe2016Hierarchist/humanNonCarcinogenicToxicity.py +1 -7
  325. hestia_earth/models/recipe2016Hierarchist/marineAquaticEcotoxicityPotential14Dcbeq.py +1 -7
  326. hestia_earth/models/recipe2016Hierarchist/marineEutrophicationPotential.py +1 -7
  327. hestia_earth/models/recipe2016Hierarchist/ozoneDepletionPotential.py +1 -7
  328. hestia_earth/models/recipe2016Hierarchist/terrestrialAcidificationPotential.py +1 -7
  329. hestia_earth/models/recipe2016Hierarchist/terrestrialEcotoxicityPotential14Dcbeq.py +1 -7
  330. hestia_earth/models/recipe2016Individualist/damageToFreshwaterEcosystemsSpeciesYear.py +1 -7
  331. hestia_earth/models/recipe2016Individualist/damageToHumanHealth.py +1 -7
  332. hestia_earth/models/recipe2016Individualist/damageToMarineEcosystemsSpeciesYear.py +1 -7
  333. hestia_earth/models/recipe2016Individualist/damageToResourceAvailability.py +1 -7
  334. hestia_earth/models/recipe2016Individualist/damageToTerrestrialEcosystemsSpeciesYear.py +1 -7
  335. hestia_earth/models/recipe2016Individualist/ecosystemDamageOzoneFormation.py +2 -10
  336. hestia_earth/models/recipe2016Individualist/fossilResourceScarcity.py +1 -7
  337. hestia_earth/models/recipe2016Individualist/freshwaterAquaticEcotoxicityPotential14Dcbeq.py +1 -7
  338. hestia_earth/models/recipe2016Individualist/freshwaterEutrophicationPotential.py +1 -7
  339. hestia_earth/models/recipe2016Individualist/humanCarcinogenicToxicity.py +1 -7
  340. hestia_earth/models/recipe2016Individualist/humanDamageOzoneFormation.py +2 -10
  341. hestia_earth/models/recipe2016Individualist/humanNonCarcinogenicToxicity.py +1 -7
  342. hestia_earth/models/recipe2016Individualist/marineAquaticEcotoxicityPotential14Dcbeq.py +1 -7
  343. hestia_earth/models/recipe2016Individualist/marineEutrophicationPotential.py +1 -7
  344. hestia_earth/models/recipe2016Individualist/ozoneDepletionPotential.py +1 -7
  345. hestia_earth/models/recipe2016Individualist/terrestrialAcidificationPotential.py +1 -7
  346. hestia_earth/models/recipe2016Individualist/terrestrialEcotoxicityPotential14Dcbeq.py +1 -7
  347. hestia_earth/models/resourceUseNotRelevant/__init__.py +2 -8
  348. hestia_earth/models/schererPfister2015/nErosionSoilFlux.py +1 -2
  349. hestia_earth/models/schererPfister2015/pErosionSoilFlux.py +1 -2
  350. hestia_earth/models/schererPfister2015/pToDrainageWaterSoilFlux.py +1 -2
  351. hestia_earth/models/schererPfister2015/pToGroundwaterSoilFlux.py +1 -2
  352. hestia_earth/models/schererPfister2015/pToSurfaceWaterSoilFlux.py +1 -2
  353. hestia_earth/models/schmidt2007/ch4ToAirWasteTreatment.py +1 -2
  354. hestia_earth/models/schmidt2007/h2SToAirWasteTreatment.py +1 -2
  355. hestia_earth/models/schmidt2007/n2OToAirWasteTreatmentDirect.py +1 -2
  356. hestia_earth/models/schmidt2007/nh3ToAirWasteTreatment.py +1 -2
  357. hestia_earth/models/site/grouped_measurement.py +2 -3
  358. hestia_earth/models/stehfestBouwman2006/n2OToAirCropResidueDecompositionDirect.py +1 -2
  359. hestia_earth/models/stehfestBouwman2006/n2OToAirExcretaDirect.py +1 -2
  360. hestia_earth/models/stehfestBouwman2006/n2OToAirInorganicFertiliserDirect.py +1 -2
  361. hestia_earth/models/stehfestBouwman2006/n2OToAirOrganicFertiliserDirect.py +1 -2
  362. hestia_earth/models/stehfestBouwman2006/n2OToAirSoilFlux_utils.py +1 -2
  363. hestia_earth/models/stehfestBouwman2006/noxToAirCropResidueDecomposition.py +1 -2
  364. hestia_earth/models/stehfestBouwman2006/noxToAirExcreta.py +1 -2
  365. hestia_earth/models/stehfestBouwman2006/noxToAirInorganicFertiliser.py +1 -2
  366. hestia_earth/models/stehfestBouwman2006/noxToAirOrganicFertiliser.py +1 -2
  367. hestia_earth/models/stehfestBouwman2006/noxToAirSoilFlux_utils.py +1 -2
  368. hestia_earth/models/stehfestBouwman2006GisImplementation/noxToAirCropResidueDecomposition.py +1 -2
  369. hestia_earth/models/stehfestBouwman2006GisImplementation/noxToAirExcreta.py +1 -2
  370. hestia_earth/models/stehfestBouwman2006GisImplementation/noxToAirInorganicFertiliser.py +1 -2
  371. hestia_earth/models/stehfestBouwman2006GisImplementation/noxToAirOrganicFertiliser.py +1 -2
  372. hestia_earth/models/stehfestBouwman2006GisImplementation/noxToAirSoilFlux_utils.py +1 -2
  373. hestia_earth/models/transformation/input/excreta.py +7 -5
  374. hestia_earth/models/transformation/product/excreta.py +4 -4
  375. hestia_earth/models/usetoxV2/freshwaterEcotoxicityPotentialCtue.py +1 -7
  376. hestia_earth/models/utils/__init__.py +26 -7
  377. hestia_earth/models/utils/background_emissions.py +3 -3
  378. hestia_earth/models/utils/blank_node.py +31 -12
  379. hestia_earth/models/utils/emission.py +24 -10
  380. hestia_earth/models/utils/indicator.py +28 -13
  381. hestia_earth/models/utils/input.py +22 -5
  382. hestia_earth/models/utils/management.py +18 -4
  383. hestia_earth/models/utils/measurement.py +14 -6
  384. hestia_earth/models/utils/practice.py +24 -4
  385. hestia_earth/models/utils/product.py +32 -14
  386. hestia_earth/models/version.py +1 -1
  387. hestia_earth/models/webbEtAl2012AndSintermannEtAl2012/nh3ToAirOrganicFertiliser.py +1 -2
  388. hestia_earth/orchestrator/models/__init__.py +22 -11
  389. {hestia_earth_models-0.74.10.dist-info → hestia_earth_models-0.74.12.dist-info}/METADATA +2 -2
  390. {hestia_earth_models-0.74.10.dist-info → hestia_earth_models-0.74.12.dist-info}/RECORD +410 -404
  391. tests/models/cml2001Baseline/test_abioticResourceDepletionFossilFuels.py +4 -9
  392. tests/models/cml2001Baseline/test_abioticResourceDepletionMineralsAndMetals.py +4 -9
  393. tests/models/environmentalFootprintV3_1/test_environmentalFootprintSingleOverallScore.py +4 -9
  394. tests/models/environmentalFootprintV3_1/test_marineEutrophicationPotential.py +1 -7
  395. tests/models/environmentalFootprintV3_1/test_scarcityWeightedWaterUse.py +2 -8
  396. tests/models/environmentalFootprintV3_1/test_soilQualityIndexLandTransformation.py +3 -13
  397. tests/models/hestia/test_default_emissions.py +2 -2
  398. tests/models/hestia/test_default_resourceUse.py +3 -3
  399. tests/models/hestia/test_landCover.py +42 -295
  400. tests/models/hestia/test_landCover_utils.py +233 -0
  401. tests/models/hestia/test_slope.py +23 -0
  402. tests/models/hestia/test_slopeLength.py +23 -0
  403. tests/models/ipcc2019/test_no3ToGroundwaterExcreta.py +1 -0
  404. tests/models/poschEtAl2008/test_terrestrialAcidificationPotentialAccumulatedExceedance.py +4 -9
  405. tests/models/poschEtAl2008/test_terrestrialEutrophicationPotentialAccumulatedExceedance.py +4 -9
  406. tests/models/utils/test_indicator.py +6 -4
  407. tests/models/utils/test_measurement.py +7 -5
  408. {hestia_earth_models-0.74.10.dist-info → hestia_earth_models-0.74.12.dist-info}/LICENSE +0 -0
  409. {hestia_earth_models-0.74.10.dist-info → hestia_earth_models-0.74.12.dist-info}/WHEEL +0 -0
  410. {hestia_earth_models-0.74.10.dist-info → hestia_earth_models-0.74.12.dist-info}/top_level.txt +0 -0
@@ -3,20 +3,15 @@ from unittest.mock import patch
3
3
 
4
4
  from pytest import mark
5
5
 
6
- from hestia_earth.models.cml2001Baseline.abioticResourceDepletionFossilFuels import MODEL, TERM_ID, run, _should_run, \
7
- get_all_non_renewable_terms
6
+ from hestia_earth.models.cml2001Baseline.abioticResourceDepletionFossilFuels import (
7
+ MODEL, TERM_ID, run, _should_run, get_all_non_renewable_terms
8
+ )
8
9
  from tests.utils import fixtures_path, fake_new_indicator
9
10
 
10
11
  class_path = f"hestia_earth.models.{MODEL}.{TERM_ID}"
11
12
  fixtures_folder = f"{fixtures_path}/{MODEL}/{TERM_ID}"
12
13
 
13
14
 
14
- def fake_rounded_indicator(value: float):
15
- indicator = fake_new_indicator(TERM_ID, MODEL)
16
- indicator['value'] = round(value, 7)
17
- return indicator
18
-
19
-
20
15
  def fake_get_terms(filename, column_name):
21
16
  data = {
22
17
  'fuel.csv': ["lignite", "conventionalCrudeOil", "naturalGas", "coalTar"],
@@ -118,7 +113,7 @@ def test_should_run(mock_get_all_non_renewable_terms, resources, expected, num_i
118
113
 
119
114
 
120
115
  @patch(f"{class_path}.get_all_non_renewable_terms", side_effect=fake_get_terms)
121
- @patch(f"{class_path}._indicator", side_effect=fake_rounded_indicator)
116
+ @patch(f"{class_path}._new_indicator", side_effect=fake_new_indicator)
122
117
  def test_run(*args):
123
118
  with open(f"{fixtures_folder}/impactassessment.jsonld", encoding='utf-8') as f:
124
119
  impactassessment = json.load(f)
@@ -3,20 +3,15 @@ from unittest.mock import patch
3
3
 
4
4
  from pytest import mark
5
5
 
6
- from hestia_earth.models.cml2001Baseline.abioticResourceDepletionMineralsAndMetals import MODEL, TERM_ID, run, \
7
- _should_run
6
+ from hestia_earth.models.cml2001Baseline.abioticResourceDepletionMineralsAndMetals import (
7
+ MODEL, TERM_ID, run, _should_run
8
+ )
8
9
  from tests.utils import fixtures_path, fake_new_indicator
9
10
 
10
11
  class_path = f"hestia_earth.models.{MODEL}.{TERM_ID}"
11
12
  fixtures_folder = f"{fixtures_path}/{MODEL}/{TERM_ID}"
12
13
 
13
14
 
14
- def fake_rounded_indicator(value: float):
15
- indicator = fake_new_indicator(TERM_ID, MODEL)
16
- indicator['value'] = round(value, 7)
17
- return indicator
18
-
19
-
20
15
  iodine_input = {"@id": "iodineMaterial", "termType": "material", "units": "kg"}
21
16
  boron_input = {"@id": "boron", "termType": "soilAmendment", "units": "kg B"}
22
17
  tellurium_input = {"@id": "CAS-13494-80-9", "termType": "otherInorganicChemical", "units": "kg"}
@@ -98,7 +93,7 @@ def test_should_run(resources, expected, num_inputs):
98
93
  assert len(grouped_inputs) == num_inputs
99
94
 
100
95
 
101
- @patch(f"{class_path}._indicator", side_effect=fake_rounded_indicator)
96
+ @patch(f"{class_path}._new_indicator", side_effect=fake_new_indicator)
102
97
  def test_run(*args):
103
98
  with open(f"{fixtures_folder}/impactassessment.jsonld", encoding='utf-8') as f:
104
99
  impactassessment = json.load(f)
@@ -3,20 +3,15 @@ from pytest import mark
3
3
  from unittest.mock import patch, Mock
4
4
 
5
5
  from hestia_earth.models.environmentalFootprintV3_1 import MODEL_FOLDER
6
- from hestia_earth.models.environmentalFootprintV3_1.environmentalFootprintSingleOverallScore import MODEL, TERM_ID, \
7
- run, _should_run
6
+ from hestia_earth.models.environmentalFootprintV3_1.environmentalFootprintSingleOverallScore import (
7
+ TERM_ID, run, _should_run
8
+ )
8
9
  from tests.utils import fixtures_path, fake_new_indicator
9
10
 
10
11
  class_path = f"hestia_earth.models.{MODEL_FOLDER}.{TERM_ID}"
11
12
  fixtures_folder = f"{fixtures_path}/{MODEL_FOLDER}/{TERM_ID}"
12
13
 
13
14
 
14
- def fake_rounded_indicator(value: float):
15
- indicator = fake_new_indicator(TERM_ID, MODEL)
16
- indicator['value'] = round(value, 20)
17
- return indicator
18
-
19
-
20
15
  methodModelEFV31 = {"@type": "Term", "@id": "environmentalFootprintV3-1"}
21
16
  methodModelFantkeEtAl2016 = {"@type": "Term", "@id": "fantkeEtAl2016"}
22
17
  methodModelfrischknechtEtAl2000 = {"@type": "Term", "@id": "frischknechtEtAl2000"}
@@ -131,7 +126,7 @@ def test_should_run(impacts, expected, num_inputs):
131
126
  assert len(resources) == num_inputs
132
127
 
133
128
 
134
- @patch(f"{class_path}._indicator", side_effect=fake_rounded_indicator)
129
+ @patch(f"{class_path}._new_indicator", side_effect=fake_new_indicator)
135
130
  def test_run(_mocked_indicator: Mock, *args):
136
131
  with open(f"{fixtures_folder}/impactassessment.jsonld", encoding='utf-8') as f:
137
132
  impactassessment = json.load(f)
@@ -2,19 +2,13 @@ import json
2
2
  from unittest.mock import patch
3
3
 
4
4
  from hestia_earth.models.environmentalFootprintV3_1 import MODEL_FOLDER
5
- from hestia_earth.models.environmentalFootprintV3_1.marineEutrophicationPotential import MODEL, TERM_ID, run
5
+ from hestia_earth.models.environmentalFootprintV3_1.marineEutrophicationPotential import TERM_ID, run
6
6
  from tests.utils import fixtures_path, fake_new_indicator
7
7
 
8
8
  class_path = f"hestia_earth.models.{MODEL_FOLDER}.{TERM_ID}"
9
9
  fixtures_folder = f"{fixtures_path}/{MODEL_FOLDER}/{TERM_ID}"
10
10
 
11
11
 
12
- def fake_rounded_indicator(value: float):
13
- indicator = fake_new_indicator(TERM_ID, MODEL)
14
- indicator['value'] = round(value, 7)
15
- return indicator
16
-
17
-
18
12
  @patch(f"{class_path}._new_indicator", side_effect=fake_new_indicator)
19
13
  def test_run(*args):
20
14
  with open(f"{fixtures_folder}/impact-assessment.jsonld", encoding='utf-8') as f:
@@ -4,7 +4,7 @@ from unittest.mock import patch
4
4
  from pytest import mark
5
5
 
6
6
  from hestia_earth.models.environmentalFootprintV3_1 import MODEL_FOLDER
7
- from hestia_earth.models.environmentalFootprintV3_1.scarcityWeightedWaterUse import MODEL, TERM_ID, run
7
+ from hestia_earth.models.environmentalFootprintV3_1.scarcityWeightedWaterUse import TERM_ID, run
8
8
  from tests.utils import fixtures_path, fake_new_indicator
9
9
 
10
10
  class_path = f"hestia_earth.models.{MODEL_FOLDER}.{TERM_ID}"
@@ -12,14 +12,8 @@ fixtures_folder = f"{fixtures_path}/{MODEL_FOLDER}/{TERM_ID}"
12
12
  _folders = [d for d in os.listdir(fixtures_folder) if os.path.isdir(os.path.join(fixtures_folder, d))]
13
13
 
14
14
 
15
- def fake_rounded_indicator(value: float):
16
- indicator = fake_new_indicator(TERM_ID, MODEL)
17
- indicator['value'] = round(value, 13)
18
- return indicator
19
-
20
-
21
15
  @mark.parametrize("folder", _folders)
22
- @patch(f"{class_path}._indicator", side_effect=fake_rounded_indicator)
16
+ @patch(f"{class_path}._new_indicator", side_effect=fake_new_indicator)
23
17
  def test_run(mock_indicator, folder):
24
18
  with open(f"{fixtures_folder}/{folder}/impactassessment.jsonld", encoding='utf-8') as f:
25
19
  impactassessment = json.load(f)
@@ -5,7 +5,7 @@ from pytest import mark
5
5
 
6
6
  from hestia_earth.models.environmentalFootprintV3_1 import MODEL_FOLDER
7
7
  from hestia_earth.models.environmentalFootprintV3_1.soilQualityIndexLandTransformation import (
8
- MODEL, TERM_ID, run, _should_run
8
+ TERM_ID, run, _should_run
9
9
  )
10
10
  from tests.utils import fixtures_path, fake_new_indicator
11
11
 
@@ -13,12 +13,6 @@ class_path = f"hestia_earth.models.{MODEL_FOLDER}.{TERM_ID}"
13
13
  fixtures_folder = f"{fixtures_path}/{MODEL_FOLDER}/{TERM_ID}"
14
14
 
15
15
 
16
- def fake_rounded_indicator(value: float):
17
- indicator = fake_new_indicator(TERM_ID, MODEL)
18
- indicator['value'] = round(value, 7)
19
- return indicator
20
-
21
-
22
16
  crop_land = {"@id": "cropland", "termType": "landCover"}
23
17
  sea_land_cover = {"@id": "seaOrOcean", "termType": "landCover"}
24
18
  forest = {"@id": "forest", "termType": "landCover"}
@@ -179,16 +173,12 @@ def test_run_italy(*args):
179
173
  ids=["No country/region => default to region world",
180
174
  "region-europe not in the lookup file => default to region world"]
181
175
  )
182
- @patch(f"{class_path}._indicator", side_effect=fake_rounded_indicator)
176
+ @patch(f"{class_path}._new_indicator", side_effect=fake_new_indicator)
183
177
  def test_run_with_country_fallback(mocked_indicator: Mock, added_data: dict):
184
- """
185
- When given valid sub-region or country not in the lookup file, default to country 'region-world' with value 574.56
186
- """
187
-
188
178
  with open(f"{fixtures_folder}/multipleTransformations/impact-assessment.jsonld", encoding='utf-8') as f:
189
179
  impact = json.load(f)
190
180
 
191
181
  impact = impact | added_data
192
182
 
193
183
  value = run(impact)
194
- assert value['value'] == 574.56
184
+ assert value['value'] == 575
@@ -11,8 +11,8 @@ fixtures_folder = f"{fixtures_path}/{MODEL}/{MODEL_KEY}"
11
11
  _folders = [d for d in os.listdir(fixtures_folder) if os.path.isdir(os.path.join(fixtures_folder, d))]
12
12
 
13
13
 
14
- def fake_new_emission_extended(*args):
15
- data = fake_new_emission(*args)
14
+ def fake_new_emission_extended(*args, **kwargs):
15
+ data = fake_new_emission(*args, **kwargs)
16
16
  data['term']['termType'] = 'emission'
17
17
  return data
18
18
 
@@ -11,8 +11,8 @@ fixtures_folder = f"{fixtures_path}/{MODEL}/{MODEL_KEY}"
11
11
  _folders = [d for d in os.listdir(fixtures_folder) if os.path.isdir(os.path.join(fixtures_folder, d))]
12
12
 
13
13
 
14
- def fake_new_indicator_extended(*args):
15
- data = fake_new_indicator(*args)
14
+ def fake_new_indicator_extended(*args, **kwargs):
15
+ data = fake_new_indicator(*args, **kwargs)
16
16
  data['term']['termType'] = 'resourceUse'
17
17
  return data
18
18
 
@@ -28,5 +28,5 @@ def test_run(mock, subfolder: str):
28
28
  expected = json.load(f)
29
29
 
30
30
  result = run(impact)
31
- print(json.dumps(result, indent=2))
31
+ # print(json.dumps(result, indent=2))
32
32
  assert result == expected
@@ -1,332 +1,87 @@
1
- import logging
2
1
  import os
3
2
  import json
4
3
  import pytest
5
4
  from unittest.mock import patch
5
+ from tests.utils import fixtures_path, fake_new_management
6
6
 
7
+ from hestia_earth.models.log import logRequirements
7
8
  from hestia_earth.models.hestia.utils import (
8
9
  FOREST_LAND, PERMANENT_PASTURE, PERMANENT_CROPLAND, ANNUAL_CROPLAND, OTHER_LAND, TOTAL_CROPLAND,
9
10
  TOTAL_AGRICULTURAL_CHANGE
10
11
  )
11
- from hestia_earth.models.log import log_as_table
12
- from tests.utils import fixtures_path, fake_new_management
13
- from hestia_earth.models.faostat2018.utils import MODEL as FAOSTAT_MODEL
14
- from hestia_earth.models.hestia.landCover import (
15
- MODEL, MODEL_KEY, _get_changes, _estimate_maximum_forest_change,
16
- run, site_area_sum_to_100, _get_sums_of_crop_expansion, _get_sum_for_land_category, scale_values_to_one,
17
- _get_most_common_or_alphabetically_first, _get_land_cover_lookup_suffix, _get_ratio_between_land_use_types
18
- )
12
+ from hestia_earth.models.hestia.landCover import MODEL, MODEL_KEY, run
19
13
 
20
- CLASS_PATH = f"hestia_earth.models.{MODEL}.{MODEL_KEY}"
14
+ class_path = f"hestia_earth.models.{MODEL}.{MODEL_KEY}"
15
+ class_path_utils = f"hestia_earth.models.{MODEL}.{MODEL_KEY}_utils"
21
16
  fixtures_folder = f"{fixtures_path}/{MODEL}/{MODEL_KEY}"
22
17
  _folders = [
23
18
  d for d in os.listdir(fixtures_folder)
24
19
  if os.path.isdir(os.path.join(fixtures_folder, d)) and not d.startswith("_")
25
20
  ]
26
21
 
27
- FAOSTAT_CLASS_PATH = f"hestia_earth.models.{FAOSTAT_MODEL}.utils"
28
- faostat_fixtures_folder = f"{fixtures_path}/{FAOSTAT_MODEL}/utils"
29
-
30
- BRAZIL_SITE = {
31
- "@type": "Site",
32
- "id": "Brazil-example",
33
- "country": {
34
- "name": "Brazil",
35
- "type": "Term"
36
- },
37
- "siteType": "cropland",
38
- "management": [
39
- {
40
- "term": {
41
- "@id": "maizePlant",
42
- "name": "Maize plant",
43
- "type": "Term",
44
- "termType": "landCover"
45
- },
46
- "value": 100,
47
- "startDate": "2010-01-01",
48
- "endDate": "2010-12-31",
49
- "type": "Management"
50
- }
51
- ]
52
- }
53
-
54
-
55
- @pytest.mark.parametrize(
56
- "terms,expected_output",
57
- [
58
- ( # Only term
59
- ["Annual crops", "Annual crops"],
60
- "Annual crops"
61
- ),
62
- ( # Most common
63
- ["Perennial crops", "Perennial crops", "Annual crops"],
64
- "Perennial crops"
65
- ),
66
- ( # Tied frequency, Alphabetically first
67
- ["Perennial crops", "Perennial crops", "Annual crops", "Annual crops"],
68
- "Annual crops"
69
- )
70
- ]
71
- )
72
- def test_get_most_common_or_alphabetically_first(terms, expected_output):
73
- actual_result = _get_most_common_or_alphabetically_first(terms)
74
- assert actual_result == expected_output
75
-
76
-
77
- def test_get_changes():
78
- result, missing_values = _get_changes(
79
- country_id="GADM-AFG",
80
- end_year=2010
81
- )
82
- assert (
83
- result == {
84
- "Arable land": -117.0,
85
- "Cropland": -123.0,
86
- "Forest land": 0,
87
- "Other land": 123.0,
88
- "Land area": 0,
89
- "Permanent crops": -6.0,
90
- "Permanent meadows and pastures": 0,
91
- "Total agricultural change": -123.0
92
- }
93
- )
94
-
95
-
96
- @pytest.mark.parametrize(
97
- "description,inputs,expected_output",
98
- [
99
- (
100
- "Annual cropland gain from forest",
101
- {
102
- "forest_change": -1000,
103
- "total_cropland_change": 1000,
104
- "pasture_change": 0,
105
- "total_agricultural_change": 1000
106
- },
107
- -1000
108
- ),
109
- (
110
- "Pasture gain from forest",
111
- {
112
- "forest_change": -1000,
113
- "total_cropland_change": 0,
114
- "pasture_change": 1000,
115
- "total_agricultural_change": 1000
116
- },
117
- -1000
118
- ),
119
- (
120
- "Brazil",
121
- {
122
- "forest_change": -77317,
123
- "total_cropland_change": 5201,
124
- "pasture_change": -8267,
125
- "total_agricultural_change": -3066
126
- },
127
- -5201
128
- ),
129
- (
130
- "Argentina",
131
- {
132
- "forest_change": -4990,
133
- "total_cropland_change": 11408,
134
- "pasture_change": -12705,
135
- "total_agricultural_change": -1297
136
- },
137
- -4990
138
- ),
139
- (
140
- "Madagascar",
141
- {
142
- "forest_change": -1131,
143
- "total_cropland_change": 275,
144
- "pasture_change": 4295,
145
- "total_agricultural_change": 4570
146
- },
147
- -1131
148
- ),
149
- (
150
- "Afforestation",
151
- {
152
- "forest_change": 100,
153
- "total_cropland_change": -1000,
154
- "pasture_change": -50,
155
- "total_agricultural_change": -1000
156
- },
157
- 0
158
- ),
159
- (
160
- "Pasture gain more than forest loss",
161
- {
162
- "forest_change": -49,
163
- "total_cropland_change": -1000,
164
- "pasture_change": 50,
165
- "total_agricultural_change": -950
166
- },
167
- -49
168
- )
169
- ]
170
- )
171
- def test_estimate_maximum_forest_change(description, inputs, expected_output):
172
- assert _estimate_maximum_forest_change(**inputs) == expected_output, description
173
-
174
-
175
- @pytest.mark.parametrize(
176
- "description,inputs,expected_result",
177
- [
178
- ("All zeros, OK", {"a": 0, "b": 0, "c": 0.0, "d": 0.0}, True),
179
- ("Exactly 1, OK", {"a": 0.1, "b": 0.5, "c": 0.4, "d": 0.0}, True),
180
- ("Almost 1, OK", {"a": 0.1, "b": 0.5, "c": 0.4, "d": 0.01}, True),
181
- ("Less than 1, Fail", {"a": 0.1, "b": 0, "c": 0.0, "d": 0.65}, False),
182
- ("More than 1, Fail", {"a": 0.15, "b": 0.7, "c": 0.0, "d": 0.65}, False),
183
- ]
184
- )
185
- def test_check_sum_of_percentages(description, inputs, expected_result):
186
- assert site_area_sum_to_100(dict_of_percentages=inputs) == expected_result
187
-
188
-
189
- def test_get_sums_of_crop_expansion():
190
- result = _get_sums_of_crop_expansion(
191
- country_id="GADM-AFG",
192
- year=2010,
193
- include_negatives=True
194
- )
195
- assert result == (753973.3, 18354.0)
196
-
197
- result = _get_sums_of_crop_expansion(
198
- country_id="GADM-AFG",
199
- year=2010,
200
- include_negatives=False
201
- )
202
- assert result == (940270.0, 28139.0)
203
-
204
-
205
- def test_get_sum_for_land_category():
206
- values = {
207
- "mangoes_guavas_and_mangosteens": "2022:5",
208
- "kiwi_fruit": "2020:4",
209
- "maize_corn": "2020:3",
210
- "other_beans_green": "2021:2",
211
- "olives": "2020:-1"
212
- }
213
- fao_stat_to_ipcc_type = {
214
- "mangoes_guavas_and_mangosteens": "Perennial crops",
215
- 'kiwi_fruit': "Perennial crops",
216
- 'maize_corn': "Annual crops",
217
- 'other_beans_green': "Annual crops",
218
- 'olives': "Perennial crops"
219
- }
220
- result = _get_sum_for_land_category(
221
- values=values,
222
- year=2020,
223
- ipcc_land_use_category="Perennial crops",
224
- fao_stat_to_ipcc_type=fao_stat_to_ipcc_type,
225
- include_negatives=True
226
- )
227
- assert result == 3.0
228
-
229
22
 
230
- @pytest.mark.parametrize(
231
- "dictionary,expected_result",
232
- [
233
- (
234
- {"a": 0, "b": 0, "c": 0},
235
- {"a": 0, "b": 0, "c": 0}
236
- ),
237
- (
238
- {"a": 1000},
239
- {"a": 1}
240
- ),
241
- (
242
- {"a": 10, "b": 5, "c": 3},
243
- {"a": 0.5556, "b": 0.2778, "c": 0.1667}
244
- )
245
- ]
246
- )
247
- def test_scale_values_to_one(dictionary, expected_result):
248
- result = scale_values_to_one(dictionary)
249
- for k, v in result.items():
250
- assert k in expected_result
251
- assert round(v, 3) == round(expected_result[k], 3)
252
-
253
-
254
- @pytest.mark.parametrize(
255
- "land_type,expected",
256
- [
257
- (FOREST_LAND, "forest"),
258
- (ANNUAL_CROPLAND, "annualCropland"),
259
- (PERMANENT_CROPLAND, "permanentCropland"),
260
- (PERMANENT_PASTURE, "permanentPasture"),
261
- (OTHER_LAND, "otherLand"),
262
- ]
263
- )
264
- def test_get_land_cover_lookup_suffix(land_type: str, expected: str):
265
- assert _get_land_cover_lookup_suffix(land_type=land_type) == expected, land_type
23
+ @pytest.mark.parametrize("subfolder", _folders)
24
+ @patch(f"{class_path}._new_management", side_effect=fake_new_management)
25
+ def test_run(mock, subfolder: str):
26
+ folder = f"{fixtures_folder}/{subfolder}"
27
+ with open(f"{folder}/site.jsonld", encoding='utf-8') as f:
28
+ site = json.load(f)
266
29
 
30
+ with open(f"{folder}/result.jsonld", encoding='utf-8') as f:
31
+ expected = json.load(f)
267
32
 
268
- def test_get_ratio_between_land_use_types():
269
- result = _get_ratio_between_land_use_types(
270
- country_id="GADM-ZWE",
271
- end_year=2004,
272
- first_land_use_term="Arable land",
273
- second_land_use_term="Permanent crops"
274
- )
275
- assert result == (3800.0, 57.417)
33
+ result = run(site)
34
+ print(json.dumps(result, indent=2))
35
+ assert result == expected
276
36
 
277
37
 
278
- @patch(f"{CLASS_PATH}.logShouldRun")
279
- @patch(f"{CLASS_PATH}.logRequirements")
280
- @patch(f"{CLASS_PATH}._get_changes")
281
- @patch(f"{CLASS_PATH}._new_management", side_effect=fake_new_management)
282
- def test_run_missing_changes_logs(mock_new_mgt, mock_get_changes, mock_logRequirements, mock_logShouldRun):
38
+ @patch(f"{class_path}.logShouldRun")
39
+ @patch(f"{class_path}.logRequirements", wraps=logRequirements)
40
+ @patch(f"{class_path_utils}._get_changes")
41
+ @patch(f"{class_path}.get_site_area_from_lookups", return_value={})
42
+ @patch(f"{class_path}._new_management", side_effect=fake_new_management)
43
+ def test_run_missing_changes_logs(mock_new_mgt, mock_area, mock_get_changes, mock_logRequirements, mock_logShouldRun):
283
44
  fake_changes = {
284
45
  FOREST_LAND: 0, ANNUAL_CROPLAND: 10, PERMANENT_CROPLAND: 20, PERMANENT_PASTURE: 70, OTHER_LAND: 0,
285
46
  TOTAL_CROPLAND: 30, TOTAL_AGRICULTURAL_CHANGE: 100
286
47
  }
287
- mock_get_changes.return_value = (fake_changes, ["Forest land"])
48
+ mock_get_changes.return_value = (fake_changes, [FOREST_LAND])
49
+
288
50
  folder = f"{fixtures_folder}/malaysia"
289
51
  with open(f"{folder}/site.jsonld", encoding='utf-8') as f:
290
52
  site = json.load(f)
291
53
 
292
54
  _ = run(site)
293
55
  mock_logRequirements.assert_any_call(
294
- log_node=site,
56
+ site,
295
57
  model=MODEL,
296
- term="forest",
58
+ term="oilPalmTree",
297
59
  model_key=MODEL_KEY,
298
- land_use_type=PERMANENT_CROPLAND,
299
60
  country_id="GADM-MYS",
300
- changes=log_as_table(fake_changes),
301
- missing_changes=FOREST_LAND
61
+ site_type_allowed=True,
62
+ allowed_land_use_types='Arable land;Permanent crops;Permanent meadows and pastures;Cropland',
63
+ land_use_type='Permanent crops',
64
+ values="year:2010_isValid:False_percentage:0_term-id:annualCropland_changes:10_site-area:0_"
65
+ "site-area-from-lookup:None_missing-changes:Forest land;year:2010_isValid:False_percentage:0_term-id:forest_"
66
+ "changes:0_site-area:0_site-area-from-lookup:None_missing-changes:Forest land;year:2010_isValid:False_"
67
+ "percentage:99.6_term-id:oilPalmTree_changes:20_site-area:0.9958907764054092_site-area-from-lookup:None_"
68
+ "missing-changes:Forest land;year:2010_isValid:False_percentage:0.411_term-id:otherLand_changes:0_"
69
+ "site-area:0.004109223594590805_site-area-from-lookup:None_missing-changes:Forest land;year:2010_"
70
+ "isValid:False_percentage:0_term-id:permanentPasture_changes:70_site-area:0_site-area-from-lookup:None_"
71
+ "missing-changes:Forest land"
302
72
  )
303
73
 
304
- mock_logShouldRun.assert_any_call(site, MODEL, "forest", False, model_key=MODEL_KEY)
305
-
306
-
307
- @pytest.mark.parametrize("subfolder", _folders)
308
- @patch(f"{CLASS_PATH}._new_management", side_effect=fake_new_management)
309
- def test_run(mock, subfolder: str):
310
- folder = f"{fixtures_folder}/{subfolder}"
311
- with open(f"{folder}/site.jsonld", encoding='utf-8') as f:
312
- site = json.load(f)
313
-
314
- with open(f"{folder}/result.jsonld", encoding='utf-8') as f:
315
- expected = json.load(f)
316
-
317
- result = run(site)
318
- assert result == expected
74
+ mock_logShouldRun.assert_any_call(site, MODEL, "oilPalmTree", False, model_key=MODEL_KEY)
319
75
 
320
76
 
321
- def fake_region_lookup(lookup_name: str, term_id: str, column: str, **log_args):
77
+ def _fake_region_lookup(*args, **kwargs):
322
78
  """Returns obviously-wrong mock results from Brazil to be distinct from model."""
323
79
  return ("2010:55.0")
324
80
 
325
81
 
326
- @patch(f"{CLASS_PATH}.get_region_lookup_value", side_effect=fake_region_lookup)
327
- @patch(f"{CLASS_PATH}._new_management", side_effect=fake_new_management)
82
+ @patch(f"{class_path_utils}.get_region_lookup_value", side_effect=_fake_region_lookup)
83
+ @patch(f"{class_path}._new_management", side_effect=fake_new_management)
328
84
  def test_landCover_from_lookup_run(mock_mgmt, mock_region_lookup, caplog):
329
- caplog.set_level(logging.INFO)
330
85
  folder = f"{fixtures_folder}/_from_lookups"
331
86
  with open(f"{folder}/site.jsonld", encoding='utf-8') as f:
332
87
  site = json.load(f)
@@ -338,16 +93,8 @@ def test_landCover_from_lookup_run(mock_mgmt, mock_region_lookup, caplog):
338
93
  mock_region_lookup.assert_called_with(
339
94
  lookup_name='region-crop-cropGroupingFAOSTAT-landCover-otherLand.csv',
340
95
  term_id='GADM-BRA',
341
- column='Maize plant',
96
+ column='Maize (corn)',
342
97
  model='hestia',
343
98
  key='landCover'
344
99
  )
345
- expected_message = ("site=Brazil-example, requirements=true, model=hestia, model_key=landCover, "
346
- "has_management_nodes=True, land_use_type=Arable land, allowed_land_use_types=Arable land;"
347
- "Permanent crops;Permanent meadows and pastures;Cropland, has_no_prior_land_cover_data=True, "
348
- "management_nodes=value:100_id:maizePlant_land-use-type:Arable land"
349
- "_endDate:2010-12-31_startDate:2010-01-01, landCover_from_lookups=Forest land:0.55;"
350
- "Arable land:0.55;Permanent crops:0.55;Permanent meadows and pastures:0.55;Other land:0.55,"
351
- " should_run_nodes=True")
352
- assert expected_message in [r.msg for r in caplog.records]
353
100
  assert result == expected