@hestia-earth/data-validation 0.37.7

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.
Files changed (410) hide show
  1. package/.coveragerc +14 -0
  2. package/.dockerignore +19 -0
  3. package/.eslintignore +17 -0
  4. package/.eslintrc.js +11 -0
  5. package/.flake8 +5 -0
  6. package/.gitlab/issue_templates/new validation.md +82 -0
  7. package/.gitlab-ci.yml +216 -0
  8. package/.readthedocs.yml +24 -0
  9. package/CODEOWNERS +11 -0
  10. package/Dockerfile +13 -0
  11. package/LICENSE +21 -0
  12. package/MANIFEST.in +2 -0
  13. package/bin/hestia-validate-data +80 -0
  14. package/build_mocking.py +14 -0
  15. package/commitlint.config.js +1 -0
  16. package/docs/Makefile +20 -0
  17. package/docs/_static/styles.css +4 -0
  18. package/docs/_templates/custom-class-template.rst +34 -0
  19. package/docs/_templates/custom-module-template.rst +66 -0
  20. package/docs/_templates/layout.html +4 -0
  21. package/docs/conf.py +74 -0
  22. package/docs/index.rst +42 -0
  23. package/docs/make.bat +35 -0
  24. package/docs/requirements.txt +13 -0
  25. package/envs/.develop.env +1 -0
  26. package/envs/.master.env +1 -0
  27. package/guide-assets/.gitkeep +0 -0
  28. package/hestia_earth/validation/README.md +5 -0
  29. package/hestia_earth/validation/__init__.py +32 -0
  30. package/hestia_earth/validation/distribution.py +22 -0
  31. package/hestia_earth/validation/gee.py +162 -0
  32. package/hestia_earth/validation/log.py +44 -0
  33. package/hestia_earth/validation/models.py +141 -0
  34. package/hestia_earth/validation/preload_requests.py +61 -0
  35. package/hestia_earth/validation/terms.py +88 -0
  36. package/hestia_earth/validation/utils.py +444 -0
  37. package/hestia_earth/validation/validators/__init__.py +141 -0
  38. package/hestia_earth/validation/validators/aggregated_cycle.py +32 -0
  39. package/hestia_earth/validation/validators/aggregated_shared.py +37 -0
  40. package/hestia_earth/validation/validators/animal.py +88 -0
  41. package/hestia_earth/validation/validators/completeness.py +252 -0
  42. package/hestia_earth/validation/validators/cycle.py +1123 -0
  43. package/hestia_earth/validation/validators/distribution.py +86 -0
  44. package/hestia_earth/validation/validators/emission.py +109 -0
  45. package/hestia_earth/validation/validators/impact_assessment.py +138 -0
  46. package/hestia_earth/validation/validators/indicator.py +154 -0
  47. package/hestia_earth/validation/validators/infrastructure.py +25 -0
  48. package/hestia_earth/validation/validators/input.py +268 -0
  49. package/hestia_earth/validation/validators/management.py +131 -0
  50. package/hestia_earth/validation/validators/measurement.py +368 -0
  51. package/hestia_earth/validation/validators/organisation.py +43 -0
  52. package/hestia_earth/validation/validators/practice.py +590 -0
  53. package/hestia_earth/validation/validators/product.py +263 -0
  54. package/hestia_earth/validation/validators/property.py +266 -0
  55. package/hestia_earth/validation/validators/shared.py +940 -0
  56. package/hestia_earth/validation/validators/site.py +312 -0
  57. package/hestia_earth/validation/validators/source.py +20 -0
  58. package/hestia_earth/validation/validators/transformation.py +250 -0
  59. package/hestia_earth/validation/version.py +1 -0
  60. package/layer/build.sh +34 -0
  61. package/layer/deploy.sh +18 -0
  62. package/package.json +59 -0
  63. package/release.sh +11 -0
  64. package/requirements-ci.txt +6 -0
  65. package/requirements-test.txt +4 -0
  66. package/requirements.txt +2 -0
  67. package/run-docker-test.sh +7 -0
  68. package/run-docker.sh +9 -0
  69. package/run.py +99 -0
  70. package/scripts/build_docs.py +283 -0
  71. package/scripts/build_validation_list.py +160 -0
  72. package/scripts/guide-create-branch.sh +15 -0
  73. package/scripts/update-package-version.js +28 -0
  74. package/search-results.json +384 -0
  75. package/setup.cfg +2 -0
  76. package/setup.py +35 -0
  77. package/src/index.ts +1 -0
  78. package/src/validations.ts +22 -0
  79. package/src/version.ts +1 -0
  80. package/tests/Dockerfile +13 -0
  81. package/tests/__init__.py +3 -0
  82. package/tests/fixtures/aggregated/cycle/inputs-impactAssessment/invalid-no-impactAssessment.json +64 -0
  83. package/tests/fixtures/aggregated/cycle/inputs-impactAssessment/invalid-world.json +69 -0
  84. package/tests/fixtures/aggregated/cycle/inputs-impactAssessment/valid.json +69 -0
  85. package/tests/fixtures/animal/duplicated-input-cycle/invalid.json +98 -0
  86. package/tests/fixtures/animal/duplicated-input-cycle/valid.json +91 -0
  87. package/tests/fixtures/animal/pregnancyRateTotal/invalid.json +49 -0
  88. package/tests/fixtures/animal/pregnancyRateTotal/valid.json +60 -0
  89. package/tests/fixtures/animal/required/invalid.json +59 -0
  90. package/tests/fixtures/animal/required/valid.json +72 -0
  91. package/tests/fixtures/completeness/all-values/warning.json +22 -0
  92. package/tests/fixtures/completeness/animalPopulation/invalid.json +58 -0
  93. package/tests/fixtures/completeness/animalPopulation/valid-animals.json +71 -0
  94. package/tests/fixtures/completeness/animalPopulation/valid-incomplete.json +58 -0
  95. package/tests/fixtures/completeness/animalPopulation/valid-no-liveAnimals.json +37 -0
  96. package/tests/fixtures/completeness/blank-nodes/agri-food processor-invalid.json +52 -0
  97. package/tests/fixtures/completeness/blank-nodes/invalid.json +124 -0
  98. package/tests/fixtures/completeness/blank-nodes/valid.json +128 -0
  99. package/tests/fixtures/completeness/cropland/site.json +16 -0
  100. package/tests/fixtures/completeness/cropland/valid.json +22 -0
  101. package/tests/fixtures/completeness/cropland/warning.json +22 -0
  102. package/tests/fixtures/completeness/freshForage/error-animals.json +63 -0
  103. package/tests/fixtures/completeness/freshForage/error-products.json +65 -0
  104. package/tests/fixtures/completeness/freshForage/valid-animal-inputs.json +63 -0
  105. package/tests/fixtures/completeness/freshForage/valid-animals.json +63 -0
  106. package/tests/fixtures/completeness/freshForage/valid-not-grazing-liveAnimal.json +55 -0
  107. package/tests/fixtures/completeness/freshForage/valid-not-liveAnimal.json +47 -0
  108. package/tests/fixtures/completeness/freshForage/valid-products.json +68 -0
  109. package/tests/fixtures/completeness/ingredient/invalid-agri-food-processor.json +37 -0
  110. package/tests/fixtures/completeness/ingredient/invalid.json +49 -0
  111. package/tests/fixtures/completeness/ingredient/valid-agri-food-processor-complete.json +49 -0
  112. package/tests/fixtures/completeness/ingredient/valid-agri-food-processor-incomplete.json +37 -0
  113. package/tests/fixtures/completeness/ingredient/valid.json +49 -0
  114. package/tests/fixtures/completeness/material/error.json +49 -0
  115. package/tests/fixtures/completeness/material/valid-fuel-material.json +60 -0
  116. package/tests/fixtures/completeness/material/valid-incomplete.json +36 -0
  117. package/tests/fixtures/completeness/material/valid-no-fuel.json +36 -0
  118. package/tests/fixtures/completeness/valid.json +22 -0
  119. package/tests/fixtures/cycle/aboveGroundCropResidue/invalid.json +76 -0
  120. package/tests/fixtures/cycle/aboveGroundCropResidue/valid.json +76 -0
  121. package/tests/fixtures/cycle/aggregated-valid.json +102 -0
  122. package/tests/fixtures/cycle/coverCrop/invalid.json +64 -0
  123. package/tests/fixtures/cycle/coverCrop/valid-not-coverCrop.json +54 -0
  124. package/tests/fixtures/cycle/coverCrop/valid.json +64 -0
  125. package/tests/fixtures/cycle/cropResidue/complete/invalid.json +56 -0
  126. package/tests/fixtures/cycle/cropResidue/complete/valid.json +82 -0
  127. package/tests/fixtures/cycle/cropResidue/incomplete/invalid.json +42 -0
  128. package/tests/fixtures/cycle/cropResidue/incomplete/valid.json +56 -0
  129. package/tests/fixtures/cycle/dates/invalid-emissions.json +70 -0
  130. package/tests/fixtures/cycle/liveAnimal-animalProduct-mapping/invalid.json +63 -0
  131. package/tests/fixtures/cycle/liveAnimal-animalProduct-mapping/valid.json +63 -0
  132. package/tests/fixtures/cycle/maximumCycleDuration/invalid-dates-year-only.json +48 -0
  133. package/tests/fixtures/cycle/maximumCycleDuration/invalid-dates.json +48 -0
  134. package/tests/fixtures/cycle/maximumCycleDuration/invalid.json +48 -0
  135. package/tests/fixtures/cycle/maximumCycleDuration/valid-dates-year-only.json +48 -0
  136. package/tests/fixtures/cycle/maximumCycleDuration/valid-dates.json +48 -0
  137. package/tests/fixtures/cycle/maximumCycleDuration/valid.json +48 -0
  138. package/tests/fixtures/cycle/otherSites/cycleDuration/invalid.json +52 -0
  139. package/tests/fixtures/cycle/otherSites/cycleDuration/valid-no-siteDuration.json +40 -0
  140. package/tests/fixtures/cycle/otherSites/cycleDuration/valid.json +52 -0
  141. package/tests/fixtures/cycle/practices/stockingDensityPermanentPastureAverage/invalid.json +56 -0
  142. package/tests/fixtures/cycle/practices/stockingDensityPermanentPastureAverage/valid.json +65 -0
  143. package/tests/fixtures/cycle/primary-product-as-input/invalid.json +59 -0
  144. package/tests/fixtures/cycle/primary-product-as-input/valid.json +48 -0
  145. package/tests/fixtures/cycle/product-linked-ia/cycle.json +66 -0
  146. package/tests/fixtures/cycle/product-linked-ia/invalid-multiple.json +58 -0
  147. package/tests/fixtures/cycle/product-linked-ia/valid.json +57 -0
  148. package/tests/fixtures/cycle/products/animals/invalid.json +69 -0
  149. package/tests/fixtures/cycle/products/animals/valid.json +58 -0
  150. package/tests/fixtures/cycle/riceGrainInHuskFlooded-minimumCycleDuration/invalid.json +53 -0
  151. package/tests/fixtures/cycle/riceGrainInHuskFlooded-minimumCycleDuration/valid.json +53 -0
  152. package/tests/fixtures/cycle/siteDuration/crop/invalid.json +53 -0
  153. package/tests/fixtures/cycle/siteDuration/crop/valid-different-duration.json +53 -0
  154. package/tests/fixtures/cycle/siteDuration/crop/valid-same-duration.json +53 -0
  155. package/tests/fixtures/cycle/siteDuration/invalid.json +41 -0
  156. package/tests/fixtures/cycle/siteDuration/valid-no-siteDuration.json +40 -0
  157. package/tests/fixtures/cycle/siteDuration/valid-otherSites.json +48 -0
  158. package/tests/fixtures/cycle/siteDuration/valid.json +45 -0
  159. package/tests/fixtures/cycle/substrate/required/invalid.json +50 -0
  160. package/tests/fixtures/cycle/substrate/required/valid.json +60 -0
  161. package/tests/fixtures/cycle/valid.json +343 -0
  162. package/tests/fixtures/emission/linked-terms/inputs/invalid.json +78 -0
  163. package/tests/fixtures/emission/linked-terms/inputs/valid.json +106 -0
  164. package/tests/fixtures/emission/linked-terms/transformation/error.json +104 -0
  165. package/tests/fixtures/emission/linked-terms/transformation/valid.json +107 -0
  166. package/tests/fixtures/emission/linked-terms/transformation/warning.json +76 -0
  167. package/tests/fixtures/emission/methodTier-background/invalid.json +60 -0
  168. package/tests/fixtures/emission/methodTier-background/valid.json +60 -0
  169. package/tests/fixtures/emission/not-relevant/invalid.json +71 -0
  170. package/tests/fixtures/emission/not-relevant/valid.json +95 -0
  171. package/tests/fixtures/emission/not-relevant-methodTier/invalid.json +70 -0
  172. package/tests/fixtures/emission/not-relevant-methodTier/valid.json +95 -0
  173. package/tests/fixtures/impactAssessment/aggregated-valid.json +43 -0
  174. package/tests/fixtures/impactAssessment/cycle-contains-product/invalid.json +34 -0
  175. package/tests/fixtures/impactAssessment/cycle-contains-product/valid.json +34 -0
  176. package/tests/fixtures/impactAssessment/cycle-endDate/invalid.json +26 -0
  177. package/tests/fixtures/impactAssessment/cycle-endDate/valid.json +26 -0
  178. package/tests/fixtures/impactAssessment/valid.json +93 -0
  179. package/tests/fixtures/indicator/characterisedIndicator-methodModel/invalid.json +52 -0
  180. package/tests/fixtures/indicator/characterisedIndicator-methodModel/valid.json +52 -0
  181. package/tests/fixtures/indicator/ionisingCompounds/invalid.json +23 -0
  182. package/tests/fixtures/indicator/ionisingCompounds/valid.json +23 -0
  183. package/tests/fixtures/indicator/landTransformation/invalid-grouped.json +257 -0
  184. package/tests/fixtures/indicator/landTransformation/invalid.json +100 -0
  185. package/tests/fixtures/indicator/landTransformation/valid-grouped-full.json +507 -0
  186. package/tests/fixtures/indicator/landTransformation/valid-grouped.json +507 -0
  187. package/tests/fixtures/indicator/landTransformation/valid.json +100 -0
  188. package/tests/fixtures/infrastructure/lifespan/invalid.json +26 -0
  189. package/tests/fixtures/infrastructure/lifespan/valid.json +45 -0
  190. package/tests/fixtures/input/animalFeed-fate/invalid.json +103 -0
  191. package/tests/fixtures/input/animalFeed-fate/valid.json +90 -0
  192. package/tests/fixtures/input/country/invalid.json +64 -0
  193. package/tests/fixtures/input/country/valid.json +64 -0
  194. package/tests/fixtures/input/distribution/animalHousing.json +103 -0
  195. package/tests/fixtures/input/distribution/complete/invalid.json +177 -0
  196. package/tests/fixtures/input/distribution/complete/valid.json +163 -0
  197. package/tests/fixtures/input/distribution/incomplete/valid.json +139 -0
  198. package/tests/fixtures/input/impactAssessment/invalid.json +99 -0
  199. package/tests/fixtures/input/impactAssessment/valid.json +89 -0
  200. package/tests/fixtures/input/input-as-product/invalid.json +57 -0
  201. package/tests/fixtures/input/input-as-product/valid.json +59 -0
  202. package/tests/fixtures/input/mustIncludeId/invalid.json +13 -0
  203. package/tests/fixtures/input/mustIncludeId/valid-multiple-ids.json +31 -0
  204. package/tests/fixtures/input/mustIncludeId/valid.json +22 -0
  205. package/tests/fixtures/input/saplings/invalid.json +58 -0
  206. package/tests/fixtures/input/saplings/valid-no-saplings.json +58 -0
  207. package/tests/fixtures/input/saplings/valid-not-plantation.json +58 -0
  208. package/tests/fixtures/input/saplings/valid.json +58 -0
  209. package/tests/fixtures/integration/distribution/product-yield-invalid.json +54 -0
  210. package/tests/fixtures/management/cycle-overlap/cycles.json +39 -0
  211. package/tests/fixtures/management/cycle-overlap/invalid.json +26 -0
  212. package/tests/fixtures/management/cycle-overlap/valid.json +26 -0
  213. package/tests/fixtures/management/exists/invalid.json +13 -0
  214. package/tests/fixtures/management/exists/valid.json +25 -0
  215. package/tests/fixtures/management/fallow-dates/invalid.json +24 -0
  216. package/tests/fixtures/management/fallow-dates/valid.json +24 -0
  217. package/tests/fixtures/management/termType/invalid-cropland.json +35 -0
  218. package/tests/fixtures/management/termType/invalid-permanent-pasture.json +25 -0
  219. package/tests/fixtures/management/termType/valid-cropland.json +55 -0
  220. package/tests/fixtures/management/termType/valid-no-management.json +13 -0
  221. package/tests/fixtures/management/termType/valid-permanent-pasture.json +35 -0
  222. package/tests/fixtures/measurement/depths/invalid.json +44 -0
  223. package/tests/fixtures/measurement/depths/valid.json +50 -0
  224. package/tests/fixtures/measurement/models/valid.json +33 -0
  225. package/tests/fixtures/measurement/models/warning-no-value.json +30 -0
  226. package/tests/fixtures/measurement/models/warning.json +33 -0
  227. package/tests/fixtures/measurement/pond-measurements/invalid.json +11 -0
  228. package/tests/fixtures/measurement/pond-measurements/valid.json +23 -0
  229. package/tests/fixtures/measurement/required-depths/error.json +71 -0
  230. package/tests/fixtures/measurement/required-depths/valid.json +126 -0
  231. package/tests/fixtures/measurement/required-depths/warning.json +29 -0
  232. package/tests/fixtures/measurement/soilTexture/missing-texture-value.json +227 -0
  233. package/tests/fixtures/measurement/soilTexture/percent-invalid.json +110 -0
  234. package/tests/fixtures/measurement/soilTexture/percent-missing-value.json +43 -0
  235. package/tests/fixtures/measurement/soilTexture/percent-valid.json +110 -0
  236. package/tests/fixtures/measurement/startDate-endDate-required/invalid.json +32 -0
  237. package/tests/fixtures/measurement/startDate-endDate-required/valid.json +46 -0
  238. package/tests/fixtures/measurement/unique/invalid.json +28 -0
  239. package/tests/fixtures/measurement/unique/valid.json +16 -0
  240. package/tests/fixtures/measurement/value-length/invalid.json +46 -0
  241. package/tests/fixtures/measurement/value-length/valid.json +44 -0
  242. package/tests/fixtures/measurement/water-salinity/invalid.json +33 -0
  243. package/tests/fixtures/measurement/water-salinity/valid-brakish.json +40 -0
  244. package/tests/fixtures/measurement/water-salinity/valid.json +33 -0
  245. package/tests/fixtures/organisation/valid.json +26 -0
  246. package/tests/fixtures/practice/croppingDuration/riceGrainInHuskFlooded/invalid.json +63 -0
  247. package/tests/fixtures/practice/croppingDuration/riceGrainInHuskFlooded/valid.json +63 -0
  248. package/tests/fixtures/practice/defaultValue/invalid.json +12 -0
  249. package/tests/fixtures/practice/defaultValue/valid.json +15 -0
  250. package/tests/fixtures/practice/excretaManagement/invalid.json +50 -0
  251. package/tests/fixtures/practice/excretaManagement/valid.json +60 -0
  252. package/tests/fixtures/practice/irrigated-complete/invalid.json +47 -0
  253. package/tests/fixtures/practice/irrigated-complete/valid-incomplete.json +47 -0
  254. package/tests/fixtures/practice/irrigated-complete/valid.json +60 -0
  255. package/tests/fixtures/practice/landCover-products/invalid.json +58 -0
  256. package/tests/fixtures/practice/landCover-products/valid-coverCrop.json +69 -0
  257. package/tests/fixtures/practice/landCover-products/valid.json +58 -0
  258. package/tests/fixtures/practice/liveAnimal-system/invalid.json +58 -0
  259. package/tests/fixtures/practice/liveAnimal-system/valid.json +69 -0
  260. package/tests/fixtures/practice/longFallowDuration/invalid.json +20 -0
  261. package/tests/fixtures/practice/longFallowDuration/valid.json +20 -0
  262. package/tests/fixtures/practice/noTillage/invalid.json +23 -0
  263. package/tests/fixtures/practice/noTillage/valid-value-not-100.json +23 -0
  264. package/tests/fixtures/practice/noTillage/valid.json +21 -0
  265. package/tests/fixtures/practice/pastureGrass/key-termType/invalid.json +16 -0
  266. package/tests/fixtures/practice/pastureGrass/key-termType/valid.json +16 -0
  267. package/tests/fixtures/practice/pastureGrass/key-value/invalid-numbers.json +67 -0
  268. package/tests/fixtures/practice/pastureGrass/key-value/invalid.json +67 -0
  269. package/tests/fixtures/practice/pastureGrass/key-value/valid.json +67 -0
  270. package/tests/fixtures/practice/pastureGrass/permanent-pasture/invalid.json +37 -0
  271. package/tests/fixtures/practice/pastureGrass/permanent-pasture/valid.json +47 -0
  272. package/tests/fixtures/practice/primaryPercent/invalid.json +49 -0
  273. package/tests/fixtures/practice/primaryPercent/valid.json +49 -0
  274. package/tests/fixtures/practice/processingOperation/invalid-no-primary.json +48 -0
  275. package/tests/fixtures/practice/processingOperation/invalid.json +49 -0
  276. package/tests/fixtures/practice/processingOperation/valid-cropland.json +37 -0
  277. package/tests/fixtures/practice/processingOperation/valid.json +49 -0
  278. package/tests/fixtures/practice/productivePhasePermanentCrops/invalid.json +48 -0
  279. package/tests/fixtures/practice/productivePhasePermanentCrops/valid-0-value.json +58 -0
  280. package/tests/fixtures/practice/productivePhasePermanentCrops/valid-no-value.json +47 -0
  281. package/tests/fixtures/practice/productivePhasePermanentCrops/valid.json +48 -0
  282. package/tests/fixtures/practice/site-management/invalid.json +75 -0
  283. package/tests/fixtures/practice/site-management/valid.json +75 -0
  284. package/tests/fixtures/practice/tillage-siteType/valid.json +51 -0
  285. package/tests/fixtures/practice/tillage-siteType/warning.json +42 -0
  286. package/tests/fixtures/practice/tillage-values/invalid-fullTillage.json +61 -0
  287. package/tests/fixtures/practice/tillage-values/invalid-noTillage.json +61 -0
  288. package/tests/fixtures/practice/tillage-values/valid.json +61 -0
  289. package/tests/fixtures/practice/waterRegime/rice/invalid.json +59 -0
  290. package/tests/fixtures/practice/waterRegime/rice/valid-0-value.json +59 -0
  291. package/tests/fixtures/practice/waterRegime/rice/valid.json +58 -0
  292. package/tests/fixtures/product/economicValueShare/invalid.json +31 -0
  293. package/tests/fixtures/product/economicValueShare/valid.json +22 -0
  294. package/tests/fixtures/product/excreta/invalid.json +62 -0
  295. package/tests/fixtures/product/excreta/valid.json +62 -0
  296. package/tests/fixtures/product/excreta/warning.json +53 -0
  297. package/tests/fixtures/product/excreta/with-system/invalid.json +79 -0
  298. package/tests/fixtures/product/excreta/with-system/valid.json +88 -0
  299. package/tests/fixtures/product/excreta/with-system/warning.json +70 -0
  300. package/tests/fixtures/product/fu_ha/invalid.json +49 -0
  301. package/tests/fixtures/product/fu_ha/valid.json +49 -0
  302. package/tests/fixtures/product/primary/invalid.json +22 -0
  303. package/tests/fixtures/product/primary/valid.json +22 -0
  304. package/tests/fixtures/product/value/valid.json +26 -0
  305. package/tests/fixtures/product/value/value-0/error.json +40 -0
  306. package/tests/fixtures/product/value/value-empty/warning.json +23 -0
  307. package/tests/fixtures/product/yield/invalid.json +54 -0
  308. package/tests/fixtures/product/yield/no-value.json +75 -0
  309. package/tests/fixtures/product/yield/valid.json +54 -0
  310. package/tests/fixtures/property/default-value/valid-allowed-exception.json +61 -0
  311. package/tests/fixtures/property/default-value/valid.json +61 -0
  312. package/tests/fixtures/property/default-value/warning.json +61 -0
  313. package/tests/fixtures/property/termType/invalid.json +60 -0
  314. package/tests/fixtures/property/termType/valid.json +60 -0
  315. package/tests/fixtures/property/value-min-max/invalid.json +77 -0
  316. package/tests/fixtures/property/value-min-max/valid-skip-maximum.json +57 -0
  317. package/tests/fixtures/property/value-min-max/valid.json +78 -0
  318. package/tests/fixtures/property/valueType/invalid.json +79 -0
  319. package/tests/fixtures/property/valueType/valid.json +79 -0
  320. package/tests/fixtures/property/volatileSolidsContent/invalid.json +99 -0
  321. package/tests/fixtures/property/volatileSolidsContent/valid.json +99 -0
  322. package/tests/fixtures/shared/coordinates/invalid.json +18 -0
  323. package/tests/fixtures/shared/coordinates/valid.json +18 -0
  324. package/tests/fixtures/shared/data-duplicates/valid.json +113 -0
  325. package/tests/fixtures/shared/data-duplicates/warning.json +172 -0
  326. package/tests/fixtures/shared/duplicated-term-units/invalid-animalProduct.json +61 -0
  327. package/tests/fixtures/shared/duplicated-term-units/invalid-organicFertiliser.json +61 -0
  328. package/tests/fixtures/shared/duplicated-term-units/valid.json +49 -0
  329. package/tests/fixtures/shared/list-country-region/invalid.json +54 -0
  330. package/tests/fixtures/shared/list-country-region/valid.json +54 -0
  331. package/tests/fixtures/shared/list-percent-value/invalid.json +49 -0
  332. package/tests/fixtures/shared/list-percent-value/valid.json +52 -0
  333. package/tests/fixtures/shared/list-valueType/invalid.json +49 -0
  334. package/tests/fixtures/shared/list-valueType/valid.json +49 -0
  335. package/tests/fixtures/shared/list-values-sum-100/management/with-properties/valid.json +91 -0
  336. package/tests/fixtures/shared/list-values-sum-100/measurements/missing-soil.json +46 -0
  337. package/tests/fixtures/shared/list-values-sum-100/measurements/no-depth-high-value.json +63 -0
  338. package/tests/fixtures/shared/list-values-sum-100/measurements/no-depth-valid.json +40 -0
  339. package/tests/fixtures/shared/list-values-sum-100/measurements/with-depth-high-value.json +71 -0
  340. package/tests/fixtures/shared/list-values-sum-100/practices/total-100.json +61 -0
  341. package/tests/fixtures/shared/list-values-sum-100/practices/total-110.json +61 -0
  342. package/tests/fixtures/shared/list-values-sum-100/practices/total-90.json +61 -0
  343. package/tests/fixtures/shared/min-max/value-above.json +31 -0
  344. package/tests/fixtures/shared/min-max/value-below.json +31 -0
  345. package/tests/fixtures/shared/min-max/value-valid.json +45 -0
  346. package/tests/fixtures/shared/model/emissions/invalid.json +102 -0
  347. package/tests/fixtures/shared/model/emissions/valid-variable-tolerance.json +180 -0
  348. package/tests/fixtures/shared/model/emissions/valid.json +102 -0
  349. package/tests/fixtures/shared/model/impacts/invalid.json +75 -0
  350. package/tests/fixtures/shared/model/impacts/valid.json +75 -0
  351. package/tests/fixtures/shared/model/inputs/valid-no-value.json +84 -0
  352. package/tests/fixtures/shared/model/inputs/valid.json +87 -0
  353. package/tests/fixtures/shared/model/inputs/warning.json +87 -0
  354. package/tests/fixtures/shared/model/products/valid-no-value.json +88 -0
  355. package/tests/fixtures/shared/model/products/valid.json +91 -0
  356. package/tests/fixtures/shared/model/products/warning.json +91 -0
  357. package/tests/fixtures/shared/otherModel/invalid.json +69 -0
  358. package/tests/fixtures/shared/otherModel/valid.json +70 -0
  359. package/tests/fixtures/shared/properties-duplicate-values/invalid.json +61 -0
  360. package/tests/fixtures/shared/properties-duplicate-values/valid.json +57 -0
  361. package/tests/fixtures/shared/properties-same-length/invalid.json +62 -0
  362. package/tests/fixtures/shared/properties-same-length/valid.json +52 -0
  363. package/tests/fixtures/shared/unit-percent/invalid.json +34 -0
  364. package/tests/fixtures/shared/unit-percent/valid.json +60 -0
  365. package/tests/fixtures/shared/unit-percent/warning.json +52 -0
  366. package/tests/fixtures/site/cycles-linked-ia/invalid.json +129 -0
  367. package/tests/fixtures/site/cycles-linked-ia/valid.json +129 -0
  368. package/tests/fixtures/site/valid.json +138 -0
  369. package/tests/fixtures/source/valid.json +19 -0
  370. package/tests/fixtures/transformation/excretaManagement/invalid.json +47 -0
  371. package/tests/fixtures/transformation/excretaManagement/valid.json +59 -0
  372. package/tests/fixtures/transformation/inputs-products/invalid.json +43 -0
  373. package/tests/fixtures/transformation/inputs-products/valid.json +43 -0
  374. package/tests/fixtures/transformation/linked-emission/invalid.json +101 -0
  375. package/tests/fixtures/transformation/linked-emission/valid.json +107 -0
  376. package/tests/fixtures/transformation/previousTransformationId/invalid-no-previous.json +127 -0
  377. package/tests/fixtures/transformation/previousTransformationId/invalid-previous-input.json +100 -0
  378. package/tests/fixtures/transformation/previousTransformationId/invalid-product-input.json +106 -0
  379. package/tests/fixtures/transformation/previousTransformationId/invalid-wrong-order.json +136 -0
  380. package/tests/fixtures/transformation/previousTransformationId/valid.json +171 -0
  381. package/tests/integration/__init__.py +0 -0
  382. package/tests/integration/test_product.py +17 -0
  383. package/tests/test_gee.py +10 -0
  384. package/tests/test_utils.py +36 -0
  385. package/tests/test_validation.py +11 -0
  386. package/tests/utils.py +28 -0
  387. package/tests/validators/__init__.py +0 -0
  388. package/tests/validators/test_aggregated_cycle.py +44 -0
  389. package/tests/validators/test_aggregated_shared.py +63 -0
  390. package/tests/validators/test_animal.py +72 -0
  391. package/tests/validators/test_completeness.py +337 -0
  392. package/tests/validators/test_cycle.py +600 -0
  393. package/tests/validators/test_emission.py +170 -0
  394. package/tests/validators/test_impact_assessment.py +80 -0
  395. package/tests/validators/test_indicator.py +120 -0
  396. package/tests/validators/test_infrastructure.py +26 -0
  397. package/tests/validators/test_input.py +434 -0
  398. package/tests/validators/test_management.py +177 -0
  399. package/tests/validators/test_measurement.py +317 -0
  400. package/tests/validators/test_organisation.py +32 -0
  401. package/tests/validators/test_practice.py +490 -0
  402. package/tests/validators/test_product.py +291 -0
  403. package/tests/validators/test_property.py +143 -0
  404. package/tests/validators/test_shared.py +1139 -0
  405. package/tests/validators/test_site.py +151 -0
  406. package/tests/validators/test_source.py +15 -0
  407. package/tests/validators/test_transformation.py +151 -0
  408. package/tests/validators/test_validators.py +74 -0
  409. package/tsconfig.dist.json +9 -0
  410. package/tsconfig.json +25 -0
@@ -0,0 +1,384 @@
1
+ {
2
+ "fuel": [
3
+ "diesel",
4
+ "petrol",
5
+ "aviationGasoline",
6
+ "diesel1D",
7
+ "marineDieselOil",
8
+ "diesel2D",
9
+ "diesel4D",
10
+ "gasolineTypeJetFuel",
11
+ "en590Diesel",
12
+ "petrolBurntIn2StrokeEngine",
13
+ "petrolBurntIn4StrokeEngine"
14
+ ],
15
+ "cropResidue": [
16
+ "discardedCropBurnt",
17
+ "aboveGroundCropResidueRemoved",
18
+ "discardedCropIncorporated",
19
+ "discardedCropLeftOnField",
20
+ "discardedCropTotal",
21
+ "aboveGroundCropResidueBurnt",
22
+ "belowGroundCropResidue",
23
+ "aboveGroundCropResidueLeftOnField",
24
+ "aboveGroundCropResidueIncorporated",
25
+ "aboveGroundCropResidueTotal",
26
+ "discardedCropRemoved"
27
+ ],
28
+ "model": [
29
+ "akagiEtAl2011",
30
+ "deRuijterEtAl2010",
31
+ "aware2-0",
32
+ "environmentalFootprintV3-1",
33
+ "salca",
34
+ "resourceUseNotRelevant",
35
+ "environmentalFootprintV3-0",
36
+ "ipcc1995",
37
+ "emissionNotRelevant",
38
+ "koble2014",
39
+ "riskpollModel",
40
+ "blonkConsultants2016",
41
+ "pooreNemecek2018",
42
+ "usEpa1995",
43
+ "schmidt2007",
44
+ "lanca",
45
+ "usEpa1993",
46
+ "ecoalimV9",
47
+ "jarvisAndPain1994",
48
+ "directive200829EcOfTheEuropeanParliament",
49
+ "emepEea2019",
50
+ "ipcc2021",
51
+ "dammgen2009",
52
+ "allenEtAl2018",
53
+ "emepEea2019CountryAverageFertiliserMix",
54
+ "gfliDatabaseV2",
55
+ "ipcc2013IncludingFeedbacks",
56
+ "linkedImpactAssessment",
57
+ "chaudharyEtAl2015",
58
+ "massBalanceModel",
59
+ "ecoIndicator95",
60
+ "semc2000",
61
+ "cml2001NonBaseline",
62
+ "royEtAl2014",
63
+ "milaICanalsEtAl2007",
64
+ "sqcbFaistEmmeneggerEtAl2009",
65
+ "hestia",
66
+ "stehfestBouwman2006",
67
+ "stehfestBouwman2006GisImplementation",
68
+ "schererPfister2015",
69
+ "globalCropWaterModel2008",
70
+ "cumulativeEnergyDemandCedMethod",
71
+ "europeanEnvironmentAgency2016",
72
+ "ipcc2019CountryAverageFertiliserMix",
73
+ "papatryphonEtAl2004",
74
+ "fantkeEtAl2016",
75
+ "lcImpactCertainEffects100Years",
76
+ "haversineFormula",
77
+ "usetoxV2",
78
+ "ipcc2013ExcludingFeedbacks",
79
+ "pribyl2010",
80
+ "harmonizedWorldSoilDatabaseV1-2",
81
+ "poschEtAl2008",
82
+ "ecoinventV3",
83
+ "chaudharyBrooks2018",
84
+ "recipe2016Hierarchist",
85
+ "sqcb",
86
+ "mapbiomas",
87
+ "recipe2016Individualist",
88
+ "cml1992",
89
+ "ecoinventV3AndEmberClimate",
90
+ "lcImpactCertainEffectsInfinite",
91
+ "ridouttPfister2010",
92
+ "ipcc2001",
93
+ "environmentalFootprintV2-0",
94
+ "europeanEnvironmentAgency2013",
95
+ "akiyamaEtAl2010",
96
+ "lcImpactAllEffectsInfinite",
97
+ "aggregatedModels",
98
+ "rainsModel",
99
+ "akagiEtAl2011AndIpcc2006",
100
+ "webbEtAl2012AndSintermannEtAl2012",
101
+ "frischknechtEtAl2000",
102
+ "impact2002Model",
103
+ "recipe2008Hierarchist",
104
+ "hyde3-2",
105
+ "ecoinventV2",
106
+ "faostat2018",
107
+ "ecoIndicator99",
108
+ "otherModel",
109
+ "ipcc1996",
110
+ "cml2001Baseline",
111
+ "recipe2016Egalitarian",
112
+ "recipe2008Egalitarian",
113
+ "ipcc2006",
114
+ "cnspsModel",
115
+ "dewulfEtAl2007",
116
+ "ipcc2019",
117
+ "ipcc2007",
118
+ "landOccupationCalculationIncludingUsedAndUnusedDuration",
119
+ "spatial",
120
+ "epa2014",
121
+ "pestlciConsensusModel",
122
+ "worldMeteorologicalOrganization1999",
123
+ "agribalyse2016",
124
+ "hestiaAggregatedData",
125
+ "pefcrGuidanceDocument2017",
126
+ "edip2003",
127
+ "recipe2008Individualist",
128
+ "aware",
129
+ "landOccupationCalculationUsedDurationOnly",
130
+ "lcImpactAllEffects100Years"
131
+ ],
132
+ "forage": [
133
+ "tomatoFreshForage",
134
+ "triticaleFreshForage",
135
+ "panicFreshForage",
136
+ "quinoaFreshForage",
137
+ "sorghumFreshForage",
138
+ "cottonFreshForage",
139
+ "ryegrassFreshForage",
140
+ "teosinteFreshForage",
141
+ "cerealFreshForage",
142
+ "alfalfaFreshForage",
143
+ "sesbanFreshForage",
144
+ "wheatFreshForage",
145
+ "taroFreshForage",
146
+ "peaFreshForage",
147
+ "jaraguaFreshForage",
148
+ "fenugreekFreshForage",
149
+ "hyparrheniaFreshForage",
150
+ "ervilFreshForage",
151
+ "amaranthFreshForage",
152
+ "horoFreshForage",
153
+ "tagasasteFreshForage",
154
+ "oliveFreshForage",
155
+ "tamarindFreshForage",
156
+ "rapeseedFreshForage",
157
+ "lebbekFreshForage",
158
+ "carobFreshForage",
159
+ "flaxFreshForage",
160
+ "sunflowerFreshForage",
161
+ "cloverFreshForage",
162
+ "chicoryFreshForage",
163
+ "maizeFreshForage",
164
+ "buckwheatFreshForage",
165
+ "calliandraFreshForage",
166
+ "redtopFreshForage",
167
+ "bluegrassFreshForage",
168
+ "sugarcaneFreshForage",
169
+ "soybeanFreshForage",
170
+ "lespedezaFreshForage",
171
+ "danthoniaFreshForage",
172
+ "pulseFreshForage",
173
+ "poroFreshForage",
174
+ "oatFreshForage",
175
+ "lanillaFreshForage",
176
+ "mustardFreshForage",
177
+ "sainfoinFreshForage",
178
+ "burguFreshForage",
179
+ "barleyFreshForage",
180
+ "turnipFreshForage",
181
+ "natalGrassFreshForage",
182
+ "pennisetumSquamulatumFreshForage",
183
+ "desertGrassFreshForage",
184
+ "blanketGrassFreshForage",
185
+ "ubaCaneFreshForage",
186
+ "slenderGramaFreshForage",
187
+ "sporobolusMarginatusFreshForage",
188
+ "ravennaGrassFreshForage",
189
+ "leptochloaOptusifloraFreshForage",
190
+ "chrysopogonFallaxFreshForage",
191
+ "mnesitheaSelloanaFreshForage",
192
+ "slenderBluestemFreshForage",
193
+ "dubiGrassFreshForage",
194
+ "paspalidiumDesertorumFreshForage",
195
+ "pennisetumStramineumFreshForage",
196
+ "trachypogonVestitusFreshForage",
197
+ "rhodesGrassFreshForage",
198
+ "bungomaGrassFreshForage",
199
+ "spearGrassFreshForage",
200
+ "jerusalemArtichokeFreshForage",
201
+ "chlorisRoxburghianaFreshForage",
202
+ "pangolaGrassFreshForage",
203
+ "slenderChlorisFreshForage",
204
+ "liverseedGrassFreshForage",
205
+ "molassesGrassFreshForage",
206
+ "birdwoodGrassFreshForage",
207
+ "cockatooFreshForage",
208
+ "jackfruitFreshForage",
209
+ "cocksfootFreshForage",
210
+ "safflowerFreshForage",
211
+ "trefoilFreshForage",
212
+ "kikuyuFreshForage",
213
+ "arrowrootFreshForage",
214
+ "itchgrassFreshForage",
215
+ "tanniaFreshForage",
216
+ "babulFreshForage",
217
+ "agatiFreshForage",
218
+ "nigerFreshForage",
219
+ "ryeFreshForage",
220
+ "peanutFreshForage",
221
+ "mulgaFreshForage",
222
+ "lupinFreshForage",
223
+ "sporobolusNervosusFreshForage",
224
+ "spottedBrachiariaFreshForage",
225
+ "pennisetumOrientaleFreshForage",
226
+ "timothyGrassFreshForage",
227
+ "eriochloaNubicaFreshForage",
228
+ "carpetGrassFreshForage",
229
+ "sporobolusHelvolusFreshForage",
230
+ "missionGrassFreshForage",
231
+ "rainTreeFreshForage",
232
+ "sudanGrassFreshForage",
233
+ "cockspurGrassFreshForage",
234
+ "swaziGrassFreshForage",
235
+ "polypogonSchimperianusFreshForage",
236
+ "coelachyrumYemenicumFreshForage",
237
+ "genericGrassFreshForage",
238
+ "donkeyGrassFreshForage",
239
+ "blackOatFreshForage",
240
+ "prosoMilletFreshForage",
241
+ "giantReedFreshForage",
242
+ "nigeriaGrassFreshForage",
243
+ "mungBeanFreshForage",
244
+ "umbrellaThornFreshForage",
245
+ "breadGrassFreshForage",
246
+ "chineseAlbiziaFreshForage",
247
+ "fodderBeetFreshForage",
248
+ "ottochloaNodosaFreshForage",
249
+ "guarBeanFreshForage",
250
+ "espartoGrassFreshForage",
251
+ "jobSTearsFreshForage",
252
+ "foxtailMilletFreshForage",
253
+ "hondurasGrassFreshForage",
254
+ "cynodonPlectostachyusFreshForage",
255
+ "greenleafDesmodiumFreshForage",
256
+ "gooseGrassFreshForage",
257
+ "starGrassFreshForage",
258
+ "yellowIndiangrassFreshForage",
259
+ "antelopeGrassFreshForage",
260
+ "whiteCloverFreshForage",
261
+ "sweetPotatoFreshForage",
262
+ "pennisetumTrachyphyllumFreshForage",
263
+ "dalGrassFreshForage",
264
+ "uradBeanFreshForage",
265
+ "wildCaneFreshForage",
266
+ "goldenMilletFreshForage",
267
+ "ischaemumMuticumFreshForage",
268
+ "buffaloGrassFreshForage",
269
+ "armgrassMilletFreshForage",
270
+ "indianCoralFreshForage",
271
+ "germanGrassFreshForage",
272
+ "wildScrobicFreshForage",
273
+ "koroniviaGrassFreshForage",
274
+ "musalGrassFreshForage",
275
+ "gliricidiaSepiumFreshForage",
276
+ "chrysopogonLatifoliusFreshForage",
277
+ "cratyliaArgenteaFreshForage",
278
+ "creepingBluegrassFreshForage",
279
+ "smutGrassFreshForage",
280
+ "giantSetariaFreshForage",
281
+ "gambaGrassFreshForage",
282
+ "andropogonFastigiatusFreshForage",
283
+ "arizonaCottontopFreshForage",
284
+ "andropogonCanaliculatusFreshForage",
285
+ "pigeonPeaFreshForage",
286
+ "guriaGrassFreshForage",
287
+ "durumWheatFreshForage",
288
+ "paraGrassFreshForage",
289
+ "torpedoGrassFreshForage",
290
+ "sainGrassFreshForage",
291
+ "bluePanicFreshForage",
292
+ "tripsacumLatifoliumFreshForage",
293
+ "bermudaGrassFreshForage",
294
+ "setariaLachneaFreshForage",
295
+ "hyacinthBeanFreshForage",
296
+ "nileGrassFreshForage",
297
+ "alangAlangFreshForage",
298
+ "elephantGrassFreshForage",
299
+ "chlorisPrieuriiFreshForage",
300
+ "blackseedGrassFreshForage",
301
+ "surinameGrassFreshForage",
302
+ "redCloverFreshForage",
303
+ "guatemalaGrassFreshForage",
304
+ "centipedeGrassFreshForage",
305
+ "dallisGrassFreshForage",
306
+ "bahiaGrassFreshForage",
307
+ "largeLeafFlemingiaFreshForage",
308
+ "weepingLoveGrassFreshForage",
309
+ "redRhodesGrassFreshForage",
310
+ "lehmannLoveGrassFreshForage",
311
+ "stylosanthesCampoGrandeFreshForage",
312
+ "milanjeFingerGrassFreshForage",
313
+ "africanCouchGrassFreshForage",
314
+ "colouredGuineaGrassFreshForage",
315
+ "grassAlfalfaMixtureFreshForage",
316
+ "smallCanaryGrassFreshForage",
317
+ "wildSudanGrassFreshForage",
318
+ "woollyFingerGrassFreshForage",
319
+ "commonThatchingGrassFreshForage",
320
+ "greyLoveGrassFreshForage",
321
+ "cushionLoveGrassFreshForage",
322
+ "wireLemonGrassFreshForage",
323
+ "sunnHempFreshForage",
324
+ "signalGrassFreshForage",
325
+ "columbusGrassFreshForage",
326
+ "fingerMilletFreshForage",
327
+ "marvelGrassFreshForage",
328
+ "jungleRiceFreshForage",
329
+ "tallFescueFreshForage",
330
+ "hedgeLucerneFreshForage",
331
+ "guineaGrassFreshForage",
332
+ "riverTamarindFreshForage",
333
+ "hookGrassFreshForage",
334
+ "anthephoraNigritanaFreshForage",
335
+ "limpoGrassFreshForage",
336
+ "echinochloaHaplocladaFreshForage",
337
+ "winterThornFreshForage",
338
+ "intermediateWheatgrassFreshForage",
339
+ "aleppoGrassFreshForage",
340
+ "pearlMilletFreshForage",
341
+ "mountainRedtopFreshForage",
342
+ "kachiGrassFreshForage",
343
+ "indianSanburFreshForage",
344
+ "caribGrassFreshForage",
345
+ "sewanGrassFreshForage",
346
+ "buffelGrassFreshForage",
347
+ "commonVetchFreshForage",
348
+ "landGrassFreshForage",
349
+ "whiteMulberryFreshForage",
350
+ "sabiGrassFreshForage",
351
+ "tocoGrassFreshForage",
352
+ "congoGrassFreshForage",
353
+ "indianBluegrassFreshForage",
354
+ "mnesitheaRottboellioidesFreshForage",
355
+ "colouredHoodGrassFreshForage",
356
+ "falseRhodesGrassFreshForage",
357
+ "stAugustineGrassFreshForage",
358
+ "commonNeedleGrassFreshForage",
359
+ "giantStarGrassFreshForage",
360
+ "blueSignalGrassFreshForage",
361
+ "chineseRyeGrassFreshForage",
362
+ "masaiLoveGrassFreshForage",
363
+ "redOatGrassFreshForage",
364
+ "egyptianCrowfootGrassFreshForage",
365
+ "swampRiceGrassFreshForage",
366
+ "genericLeguminousGrassFreshForage",
367
+ "fineThatchingGrassFreshForage",
368
+ "nadiBlueGrassFreshForage",
369
+ "bigLeafBristleGrassFreshForage",
370
+ "yellowThatchingGrassFreshForage",
371
+ "africanLocustBeanFreshForage",
372
+ "whiteSpearGrassFreshForage",
373
+ "queenslandBlueGrassFreshForage",
374
+ "bulbousCanaryGrassFreshForage",
375
+ "grassCloverMixtureFreshForage",
376
+ "hairyHerringboneGrassFreshForage"
377
+ ],
378
+ "rice": [
379
+ "riceStraw",
380
+ "jungleRiceHay",
381
+ "riceGrainInHuskFlooded",
382
+ "riceGrainInHuskUpland"
383
+ ]
384
+ }
package/setup.cfg ADDED
@@ -0,0 +1,2 @@
1
+ [metadata]
2
+ description-file = README.md
package/setup.py ADDED
@@ -0,0 +1,35 @@
1
+ from setuptools import find_namespace_packages, setup
2
+
3
+ from hestia_earth.validation.version import VERSION
4
+
5
+ with open("README.md", "r") as fh:
6
+ long_description = fh.read()
7
+
8
+
9
+ with open("requirements.txt", "r") as fh:
10
+ REQUIRES = fh.read().splitlines()
11
+
12
+
13
+ setup(
14
+ name="hestia_earth_validation",
15
+ version=VERSION,
16
+ description="HESTIA Data Validation library",
17
+ long_description=long_description,
18
+ long_description_content_type="text/markdown",
19
+ author="Guillaume Royer",
20
+ author_email="guillaumeroyer.mail@gmail.com",
21
+ license="MIT",
22
+ url="https://gitlab.com/hestia-earth/hestia-data-validation",
23
+ keywords=["hestia", "data", "validation"],
24
+ packages=find_namespace_packages(include=["hestia_earth.*"]),
25
+ include_package_data=True,
26
+ python_requires=">=3",
27
+ classifiers=[],
28
+ install_requires=REQUIRES,
29
+ scripts=["bin/hestia-validate-data"],
30
+ extras_require={
31
+ "models": ["hestia-earth-models>=0.75.1"],
32
+ "spatial": ["hestia-earth-earth-engine>=0.6.0"],
33
+ "distribution": ["hestia-earth-distribution>=0.3.1"],
34
+ },
35
+ )
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './validations';
@@ -0,0 +1,22 @@
1
+ import * as data from '../validation.json';
2
+
3
+ export interface IValidation {
4
+ function: string;
5
+ level: 'error' | 'warning';
6
+ message: string;
7
+ }
8
+
9
+ export interface IValidations {
10
+ validations: IValidation[];
11
+ }
12
+
13
+ export const validations = data as IValidations;
14
+
15
+ export const validationsByMessage = data.validations.reduce(
16
+ (prev, curr: IValidation) => {
17
+ prev[curr.message] = prev[curr.message] || [];
18
+ prev[curr.message].push(curr);
19
+ return prev;
20
+ },
21
+ {} as Record<string, IValidation[]>
22
+ );
package/src/version.ts ADDED
@@ -0,0 +1 @@
1
+ export const DATA_VALIDATION_VERSION = '0.75.3';
@@ -0,0 +1,13 @@
1
+ FROM python:3.12
2
+
3
+ WORKDIR /app
4
+
5
+ COPY requirements.txt /app/requirements.txt
6
+ COPY requirements-ci.txt /app/requirements-ci.txt
7
+ COPY requirements-test.txt /app/requirements-test.txt
8
+
9
+ RUN pip install -r requirements-test.txt
10
+
11
+ COPY . /app
12
+
13
+ CMD pytest -n 5 --cov-config=.coveragerc --cov-report term --cov-report html --cov=./ --cov-fail-under=95
@@ -0,0 +1,3 @@
1
+ import os
2
+
3
+ os.environ.setdefault("VALIDATE_LINKED_IA", "false")
@@ -0,0 +1,64 @@
1
+ {
2
+ "id": "3",
3
+ "type": "Cycle",
4
+ "name": "cycle",
5
+ "functionalUnit": "1 ha",
6
+ "site": {
7
+ "id": "1",
8
+ "type": "Site",
9
+ "siteType": "agri-food processor"
10
+ },
11
+ "dataPrivate": true,
12
+ "completeness": {
13
+ "type": "Completeness",
14
+ "electricityFuel": true,
15
+ "material": true,
16
+ "fertiliser": true,
17
+ "water": true,
18
+ "cropResidue": true,
19
+ "animalFeed": true,
20
+ "transport": false,
21
+ "excreta": true,
22
+ "waste": true,
23
+ "seed": true,
24
+ "pesticideVeterinaryDrug": true,
25
+ "liveAnimalInput": true,
26
+ "operation": true,
27
+ "soilAmendment": true,
28
+ "product": true,
29
+ "otherChemical": false,
30
+ "freshForage": false,
31
+ "ingredient": false,
32
+ "animalPopulation": false
33
+ },
34
+ "defaultMethodClassification": "modelled",
35
+ "defaultMethodClassificationDescription": "description",
36
+ "endDate": "2025",
37
+ "inputs": [
38
+ {
39
+ "type": "Input",
40
+ "term": {
41
+ "@type": "Term",
42
+ "@id": "oilPalmFruit",
43
+ "termType": "crop"
44
+ },
45
+ "value": [
46
+ 20
47
+ ]
48
+ }
49
+ ],
50
+ "products": [
51
+ {
52
+ "type": "Product",
53
+ "term": {
54
+ "@type": "Term",
55
+ "@id": "oilPalmOilCrude",
56
+ "termType": "processedFood"
57
+ },
58
+ "value": [
59
+ 10
60
+ ],
61
+ "primary": true
62
+ }
63
+ ]
64
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "id": "3",
3
+ "type": "Cycle",
4
+ "name": "cycle",
5
+ "functionalUnit": "1 ha",
6
+ "site": {
7
+ "id": "1",
8
+ "type": "Site",
9
+ "siteType": "agri-food processor"
10
+ },
11
+ "dataPrivate": true,
12
+ "completeness": {
13
+ "type": "Completeness",
14
+ "electricityFuel": true,
15
+ "material": true,
16
+ "fertiliser": true,
17
+ "water": true,
18
+ "cropResidue": true,
19
+ "animalFeed": true,
20
+ "transport": false,
21
+ "excreta": true,
22
+ "waste": true,
23
+ "seed": true,
24
+ "pesticideVeterinaryDrug": true,
25
+ "liveAnimalInput": true,
26
+ "operation": true,
27
+ "soilAmendment": true,
28
+ "product": true,
29
+ "otherChemical": false,
30
+ "freshForage": false,
31
+ "ingredient": false,
32
+ "animalPopulation": false
33
+ },
34
+ "defaultMethodClassification": "modelled",
35
+ "defaultMethodClassificationDescription": "description",
36
+ "endDate": "2025",
37
+ "inputs": [
38
+ {
39
+ "type": "Input",
40
+ "term": {
41
+ "@type": "Term",
42
+ "@id": "oilPalmFruit",
43
+ "termType": "crop"
44
+ },
45
+ "country": {
46
+ "@type": "Term",
47
+ "@id": "GADM-BRA"
48
+ },
49
+ "impactAssessment": {
50
+ "@type": "ImpactAssessment",
51
+ "@id": "oilPalmFruit-world-2010-2025"
52
+ },
53
+ "impactAssessmentIsProxy": false,
54
+ "value": [10]
55
+ }
56
+ ],
57
+ "products": [
58
+ {
59
+ "type": "Product",
60
+ "term": {
61
+ "@type": "Term",
62
+ "@id": "oilPalmOilCrude",
63
+ "termType": "processedFood"
64
+ },
65
+ "value": [10],
66
+ "primary": true
67
+ }
68
+ ]
69
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "id": "3",
3
+ "type": "Cycle",
4
+ "name": "cycle",
5
+ "functionalUnit": "1 ha",
6
+ "site": {
7
+ "id": "1",
8
+ "type": "Site",
9
+ "siteType": "agri-food processor"
10
+ },
11
+ "dataPrivate": true,
12
+ "completeness": {
13
+ "type": "Completeness",
14
+ "electricityFuel": true,
15
+ "material": true,
16
+ "fertiliser": true,
17
+ "water": true,
18
+ "cropResidue": true,
19
+ "animalFeed": true,
20
+ "transport": false,
21
+ "excreta": true,
22
+ "waste": true,
23
+ "seed": true,
24
+ "pesticideVeterinaryDrug": true,
25
+ "liveAnimalInput": true,
26
+ "operation": true,
27
+ "soilAmendment": true,
28
+ "product": true,
29
+ "otherChemical": false,
30
+ "freshForage": false,
31
+ "ingredient": false,
32
+ "animalPopulation": false
33
+ },
34
+ "defaultMethodClassification": "modelled",
35
+ "defaultMethodClassificationDescription": "description",
36
+ "endDate": "2025",
37
+ "inputs": [
38
+ {
39
+ "type": "Input",
40
+ "term": {
41
+ "@type": "Term",
42
+ "@id": "oilPalmFruit",
43
+ "termType": "crop"
44
+ },
45
+ "country": {
46
+ "@type": "Term",
47
+ "@id": "GADM-BRA"
48
+ },
49
+ "impactAssessment": {
50
+ "@type": "ImpactAssessment",
51
+ "@id": "oilPalmFruit-brazil-2010-2025"
52
+ },
53
+ "impactAssessmentIsProxy": false,
54
+ "value": [10]
55
+ }
56
+ ],
57
+ "products": [
58
+ {
59
+ "type": "Product",
60
+ "term": {
61
+ "@type": "Term",
62
+ "@id": "oilPalmOilCrude",
63
+ "termType": "processedFood"
64
+ },
65
+ "value": [10],
66
+ "primary": true
67
+ }
68
+ ]
69
+ }