@hestia-earth/data-validation 0.37.7 → 0.37.8

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 (411) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +17 -0
  3. package/dist/validations.d.ts +10 -0
  4. package/dist/validations.js +10 -0
  5. package/package.json +4 -3
  6. package/search-results.json +22 -22
  7. package/src/version.ts +1 -1
  8. package/validation.json +629 -0
  9. package/.coveragerc +0 -14
  10. package/.dockerignore +0 -19
  11. package/.eslintignore +0 -17
  12. package/.eslintrc.js +0 -11
  13. package/.flake8 +0 -5
  14. package/.gitlab/issue_templates/new validation.md +0 -82
  15. package/.gitlab-ci.yml +0 -216
  16. package/.readthedocs.yml +0 -24
  17. package/CODEOWNERS +0 -11
  18. package/Dockerfile +0 -13
  19. package/MANIFEST.in +0 -2
  20. package/bin/hestia-validate-data +0 -80
  21. package/build_mocking.py +0 -14
  22. package/commitlint.config.js +0 -1
  23. package/docs/Makefile +0 -20
  24. package/docs/_static/styles.css +0 -4
  25. package/docs/_templates/custom-class-template.rst +0 -34
  26. package/docs/_templates/custom-module-template.rst +0 -66
  27. package/docs/_templates/layout.html +0 -4
  28. package/docs/conf.py +0 -74
  29. package/docs/index.rst +0 -42
  30. package/docs/make.bat +0 -35
  31. package/docs/requirements.txt +0 -13
  32. package/envs/.develop.env +0 -1
  33. package/envs/.master.env +0 -1
  34. package/guide-assets/.gitkeep +0 -0
  35. package/hestia_earth/validation/README.md +0 -5
  36. package/hestia_earth/validation/__init__.py +0 -32
  37. package/hestia_earth/validation/distribution.py +0 -22
  38. package/hestia_earth/validation/gee.py +0 -162
  39. package/hestia_earth/validation/log.py +0 -44
  40. package/hestia_earth/validation/models.py +0 -141
  41. package/hestia_earth/validation/preload_requests.py +0 -61
  42. package/hestia_earth/validation/terms.py +0 -88
  43. package/hestia_earth/validation/utils.py +0 -444
  44. package/hestia_earth/validation/validators/__init__.py +0 -141
  45. package/hestia_earth/validation/validators/aggregated_cycle.py +0 -32
  46. package/hestia_earth/validation/validators/aggregated_shared.py +0 -37
  47. package/hestia_earth/validation/validators/animal.py +0 -88
  48. package/hestia_earth/validation/validators/completeness.py +0 -252
  49. package/hestia_earth/validation/validators/cycle.py +0 -1123
  50. package/hestia_earth/validation/validators/distribution.py +0 -86
  51. package/hestia_earth/validation/validators/emission.py +0 -109
  52. package/hestia_earth/validation/validators/impact_assessment.py +0 -138
  53. package/hestia_earth/validation/validators/indicator.py +0 -154
  54. package/hestia_earth/validation/validators/infrastructure.py +0 -25
  55. package/hestia_earth/validation/validators/input.py +0 -268
  56. package/hestia_earth/validation/validators/management.py +0 -131
  57. package/hestia_earth/validation/validators/measurement.py +0 -368
  58. package/hestia_earth/validation/validators/organisation.py +0 -43
  59. package/hestia_earth/validation/validators/practice.py +0 -590
  60. package/hestia_earth/validation/validators/product.py +0 -263
  61. package/hestia_earth/validation/validators/property.py +0 -266
  62. package/hestia_earth/validation/validators/shared.py +0 -940
  63. package/hestia_earth/validation/validators/site.py +0 -312
  64. package/hestia_earth/validation/validators/source.py +0 -20
  65. package/hestia_earth/validation/validators/transformation.py +0 -250
  66. package/hestia_earth/validation/version.py +0 -1
  67. package/layer/build.sh +0 -34
  68. package/layer/deploy.sh +0 -18
  69. package/release.sh +0 -11
  70. package/requirements-ci.txt +0 -6
  71. package/requirements-test.txt +0 -4
  72. package/requirements.txt +0 -2
  73. package/run-docker-test.sh +0 -7
  74. package/run-docker.sh +0 -9
  75. package/run.py +0 -99
  76. package/scripts/build_docs.py +0 -283
  77. package/scripts/build_validation_list.py +0 -160
  78. package/scripts/guide-create-branch.sh +0 -15
  79. package/scripts/update-package-version.js +0 -28
  80. package/setup.py +0 -35
  81. package/tests/Dockerfile +0 -13
  82. package/tests/__init__.py +0 -3
  83. package/tests/fixtures/aggregated/cycle/inputs-impactAssessment/invalid-no-impactAssessment.json +0 -64
  84. package/tests/fixtures/aggregated/cycle/inputs-impactAssessment/invalid-world.json +0 -69
  85. package/tests/fixtures/aggregated/cycle/inputs-impactAssessment/valid.json +0 -69
  86. package/tests/fixtures/animal/duplicated-input-cycle/invalid.json +0 -98
  87. package/tests/fixtures/animal/duplicated-input-cycle/valid.json +0 -91
  88. package/tests/fixtures/animal/pregnancyRateTotal/invalid.json +0 -49
  89. package/tests/fixtures/animal/pregnancyRateTotal/valid.json +0 -60
  90. package/tests/fixtures/animal/required/invalid.json +0 -59
  91. package/tests/fixtures/animal/required/valid.json +0 -72
  92. package/tests/fixtures/completeness/all-values/warning.json +0 -22
  93. package/tests/fixtures/completeness/animalPopulation/invalid.json +0 -58
  94. package/tests/fixtures/completeness/animalPopulation/valid-animals.json +0 -71
  95. package/tests/fixtures/completeness/animalPopulation/valid-incomplete.json +0 -58
  96. package/tests/fixtures/completeness/animalPopulation/valid-no-liveAnimals.json +0 -37
  97. package/tests/fixtures/completeness/blank-nodes/agri-food processor-invalid.json +0 -52
  98. package/tests/fixtures/completeness/blank-nodes/invalid.json +0 -124
  99. package/tests/fixtures/completeness/blank-nodes/valid.json +0 -128
  100. package/tests/fixtures/completeness/cropland/site.json +0 -16
  101. package/tests/fixtures/completeness/cropland/valid.json +0 -22
  102. package/tests/fixtures/completeness/cropland/warning.json +0 -22
  103. package/tests/fixtures/completeness/freshForage/error-animals.json +0 -63
  104. package/tests/fixtures/completeness/freshForage/error-products.json +0 -65
  105. package/tests/fixtures/completeness/freshForage/valid-animal-inputs.json +0 -63
  106. package/tests/fixtures/completeness/freshForage/valid-animals.json +0 -63
  107. package/tests/fixtures/completeness/freshForage/valid-not-grazing-liveAnimal.json +0 -55
  108. package/tests/fixtures/completeness/freshForage/valid-not-liveAnimal.json +0 -47
  109. package/tests/fixtures/completeness/freshForage/valid-products.json +0 -68
  110. package/tests/fixtures/completeness/ingredient/invalid-agri-food-processor.json +0 -37
  111. package/tests/fixtures/completeness/ingredient/invalid.json +0 -49
  112. package/tests/fixtures/completeness/ingredient/valid-agri-food-processor-complete.json +0 -49
  113. package/tests/fixtures/completeness/ingredient/valid-agri-food-processor-incomplete.json +0 -37
  114. package/tests/fixtures/completeness/ingredient/valid.json +0 -49
  115. package/tests/fixtures/completeness/material/error.json +0 -49
  116. package/tests/fixtures/completeness/material/valid-fuel-material.json +0 -60
  117. package/tests/fixtures/completeness/material/valid-incomplete.json +0 -36
  118. package/tests/fixtures/completeness/material/valid-no-fuel.json +0 -36
  119. package/tests/fixtures/completeness/valid.json +0 -22
  120. package/tests/fixtures/cycle/aboveGroundCropResidue/invalid.json +0 -76
  121. package/tests/fixtures/cycle/aboveGroundCropResidue/valid.json +0 -76
  122. package/tests/fixtures/cycle/aggregated-valid.json +0 -102
  123. package/tests/fixtures/cycle/coverCrop/invalid.json +0 -64
  124. package/tests/fixtures/cycle/coverCrop/valid-not-coverCrop.json +0 -54
  125. package/tests/fixtures/cycle/coverCrop/valid.json +0 -64
  126. package/tests/fixtures/cycle/cropResidue/complete/invalid.json +0 -56
  127. package/tests/fixtures/cycle/cropResidue/complete/valid.json +0 -82
  128. package/tests/fixtures/cycle/cropResidue/incomplete/invalid.json +0 -42
  129. package/tests/fixtures/cycle/cropResidue/incomplete/valid.json +0 -56
  130. package/tests/fixtures/cycle/dates/invalid-emissions.json +0 -70
  131. package/tests/fixtures/cycle/liveAnimal-animalProduct-mapping/invalid.json +0 -63
  132. package/tests/fixtures/cycle/liveAnimal-animalProduct-mapping/valid.json +0 -63
  133. package/tests/fixtures/cycle/maximumCycleDuration/invalid-dates-year-only.json +0 -48
  134. package/tests/fixtures/cycle/maximumCycleDuration/invalid-dates.json +0 -48
  135. package/tests/fixtures/cycle/maximumCycleDuration/invalid.json +0 -48
  136. package/tests/fixtures/cycle/maximumCycleDuration/valid-dates-year-only.json +0 -48
  137. package/tests/fixtures/cycle/maximumCycleDuration/valid-dates.json +0 -48
  138. package/tests/fixtures/cycle/maximumCycleDuration/valid.json +0 -48
  139. package/tests/fixtures/cycle/otherSites/cycleDuration/invalid.json +0 -52
  140. package/tests/fixtures/cycle/otherSites/cycleDuration/valid-no-siteDuration.json +0 -40
  141. package/tests/fixtures/cycle/otherSites/cycleDuration/valid.json +0 -52
  142. package/tests/fixtures/cycle/practices/stockingDensityPermanentPastureAverage/invalid.json +0 -56
  143. package/tests/fixtures/cycle/practices/stockingDensityPermanentPastureAverage/valid.json +0 -65
  144. package/tests/fixtures/cycle/primary-product-as-input/invalid.json +0 -59
  145. package/tests/fixtures/cycle/primary-product-as-input/valid.json +0 -48
  146. package/tests/fixtures/cycle/product-linked-ia/cycle.json +0 -66
  147. package/tests/fixtures/cycle/product-linked-ia/invalid-multiple.json +0 -58
  148. package/tests/fixtures/cycle/product-linked-ia/valid.json +0 -57
  149. package/tests/fixtures/cycle/products/animals/invalid.json +0 -69
  150. package/tests/fixtures/cycle/products/animals/valid.json +0 -58
  151. package/tests/fixtures/cycle/riceGrainInHuskFlooded-minimumCycleDuration/invalid.json +0 -53
  152. package/tests/fixtures/cycle/riceGrainInHuskFlooded-minimumCycleDuration/valid.json +0 -53
  153. package/tests/fixtures/cycle/siteDuration/crop/invalid.json +0 -53
  154. package/tests/fixtures/cycle/siteDuration/crop/valid-different-duration.json +0 -53
  155. package/tests/fixtures/cycle/siteDuration/crop/valid-same-duration.json +0 -53
  156. package/tests/fixtures/cycle/siteDuration/invalid.json +0 -41
  157. package/tests/fixtures/cycle/siteDuration/valid-no-siteDuration.json +0 -40
  158. package/tests/fixtures/cycle/siteDuration/valid-otherSites.json +0 -48
  159. package/tests/fixtures/cycle/siteDuration/valid.json +0 -45
  160. package/tests/fixtures/cycle/substrate/required/invalid.json +0 -50
  161. package/tests/fixtures/cycle/substrate/required/valid.json +0 -60
  162. package/tests/fixtures/cycle/valid.json +0 -343
  163. package/tests/fixtures/emission/linked-terms/inputs/invalid.json +0 -78
  164. package/tests/fixtures/emission/linked-terms/inputs/valid.json +0 -106
  165. package/tests/fixtures/emission/linked-terms/transformation/error.json +0 -104
  166. package/tests/fixtures/emission/linked-terms/transformation/valid.json +0 -107
  167. package/tests/fixtures/emission/linked-terms/transformation/warning.json +0 -76
  168. package/tests/fixtures/emission/methodTier-background/invalid.json +0 -60
  169. package/tests/fixtures/emission/methodTier-background/valid.json +0 -60
  170. package/tests/fixtures/emission/not-relevant/invalid.json +0 -71
  171. package/tests/fixtures/emission/not-relevant/valid.json +0 -95
  172. package/tests/fixtures/emission/not-relevant-methodTier/invalid.json +0 -70
  173. package/tests/fixtures/emission/not-relevant-methodTier/valid.json +0 -95
  174. package/tests/fixtures/impactAssessment/aggregated-valid.json +0 -43
  175. package/tests/fixtures/impactAssessment/cycle-contains-product/invalid.json +0 -34
  176. package/tests/fixtures/impactAssessment/cycle-contains-product/valid.json +0 -34
  177. package/tests/fixtures/impactAssessment/cycle-endDate/invalid.json +0 -26
  178. package/tests/fixtures/impactAssessment/cycle-endDate/valid.json +0 -26
  179. package/tests/fixtures/impactAssessment/valid.json +0 -93
  180. package/tests/fixtures/indicator/characterisedIndicator-methodModel/invalid.json +0 -52
  181. package/tests/fixtures/indicator/characterisedIndicator-methodModel/valid.json +0 -52
  182. package/tests/fixtures/indicator/ionisingCompounds/invalid.json +0 -23
  183. package/tests/fixtures/indicator/ionisingCompounds/valid.json +0 -23
  184. package/tests/fixtures/indicator/landTransformation/invalid-grouped.json +0 -257
  185. package/tests/fixtures/indicator/landTransformation/invalid.json +0 -100
  186. package/tests/fixtures/indicator/landTransformation/valid-grouped-full.json +0 -507
  187. package/tests/fixtures/indicator/landTransformation/valid-grouped.json +0 -507
  188. package/tests/fixtures/indicator/landTransformation/valid.json +0 -100
  189. package/tests/fixtures/infrastructure/lifespan/invalid.json +0 -26
  190. package/tests/fixtures/infrastructure/lifespan/valid.json +0 -45
  191. package/tests/fixtures/input/animalFeed-fate/invalid.json +0 -103
  192. package/tests/fixtures/input/animalFeed-fate/valid.json +0 -90
  193. package/tests/fixtures/input/country/invalid.json +0 -64
  194. package/tests/fixtures/input/country/valid.json +0 -64
  195. package/tests/fixtures/input/distribution/animalHousing.json +0 -103
  196. package/tests/fixtures/input/distribution/complete/invalid.json +0 -177
  197. package/tests/fixtures/input/distribution/complete/valid.json +0 -163
  198. package/tests/fixtures/input/distribution/incomplete/valid.json +0 -139
  199. package/tests/fixtures/input/impactAssessment/invalid.json +0 -99
  200. package/tests/fixtures/input/impactAssessment/valid.json +0 -89
  201. package/tests/fixtures/input/input-as-product/invalid.json +0 -57
  202. package/tests/fixtures/input/input-as-product/valid.json +0 -59
  203. package/tests/fixtures/input/mustIncludeId/invalid.json +0 -13
  204. package/tests/fixtures/input/mustIncludeId/valid-multiple-ids.json +0 -31
  205. package/tests/fixtures/input/mustIncludeId/valid.json +0 -22
  206. package/tests/fixtures/input/saplings/invalid.json +0 -58
  207. package/tests/fixtures/input/saplings/valid-no-saplings.json +0 -58
  208. package/tests/fixtures/input/saplings/valid-not-plantation.json +0 -58
  209. package/tests/fixtures/input/saplings/valid.json +0 -58
  210. package/tests/fixtures/integration/distribution/product-yield-invalid.json +0 -54
  211. package/tests/fixtures/management/cycle-overlap/cycles.json +0 -39
  212. package/tests/fixtures/management/cycle-overlap/invalid.json +0 -26
  213. package/tests/fixtures/management/cycle-overlap/valid.json +0 -26
  214. package/tests/fixtures/management/exists/invalid.json +0 -13
  215. package/tests/fixtures/management/exists/valid.json +0 -25
  216. package/tests/fixtures/management/fallow-dates/invalid.json +0 -24
  217. package/tests/fixtures/management/fallow-dates/valid.json +0 -24
  218. package/tests/fixtures/management/termType/invalid-cropland.json +0 -35
  219. package/tests/fixtures/management/termType/invalid-permanent-pasture.json +0 -25
  220. package/tests/fixtures/management/termType/valid-cropland.json +0 -55
  221. package/tests/fixtures/management/termType/valid-no-management.json +0 -13
  222. package/tests/fixtures/management/termType/valid-permanent-pasture.json +0 -35
  223. package/tests/fixtures/measurement/depths/invalid.json +0 -44
  224. package/tests/fixtures/measurement/depths/valid.json +0 -50
  225. package/tests/fixtures/measurement/models/valid.json +0 -33
  226. package/tests/fixtures/measurement/models/warning-no-value.json +0 -30
  227. package/tests/fixtures/measurement/models/warning.json +0 -33
  228. package/tests/fixtures/measurement/pond-measurements/invalid.json +0 -11
  229. package/tests/fixtures/measurement/pond-measurements/valid.json +0 -23
  230. package/tests/fixtures/measurement/required-depths/error.json +0 -71
  231. package/tests/fixtures/measurement/required-depths/valid.json +0 -126
  232. package/tests/fixtures/measurement/required-depths/warning.json +0 -29
  233. package/tests/fixtures/measurement/soilTexture/missing-texture-value.json +0 -227
  234. package/tests/fixtures/measurement/soilTexture/percent-invalid.json +0 -110
  235. package/tests/fixtures/measurement/soilTexture/percent-missing-value.json +0 -43
  236. package/tests/fixtures/measurement/soilTexture/percent-valid.json +0 -110
  237. package/tests/fixtures/measurement/startDate-endDate-required/invalid.json +0 -32
  238. package/tests/fixtures/measurement/startDate-endDate-required/valid.json +0 -46
  239. package/tests/fixtures/measurement/unique/invalid.json +0 -28
  240. package/tests/fixtures/measurement/unique/valid.json +0 -16
  241. package/tests/fixtures/measurement/value-length/invalid.json +0 -46
  242. package/tests/fixtures/measurement/value-length/valid.json +0 -44
  243. package/tests/fixtures/measurement/water-salinity/invalid.json +0 -33
  244. package/tests/fixtures/measurement/water-salinity/valid-brakish.json +0 -40
  245. package/tests/fixtures/measurement/water-salinity/valid.json +0 -33
  246. package/tests/fixtures/organisation/valid.json +0 -26
  247. package/tests/fixtures/practice/croppingDuration/riceGrainInHuskFlooded/invalid.json +0 -63
  248. package/tests/fixtures/practice/croppingDuration/riceGrainInHuskFlooded/valid.json +0 -63
  249. package/tests/fixtures/practice/defaultValue/invalid.json +0 -12
  250. package/tests/fixtures/practice/defaultValue/valid.json +0 -15
  251. package/tests/fixtures/practice/excretaManagement/invalid.json +0 -50
  252. package/tests/fixtures/practice/excretaManagement/valid.json +0 -60
  253. package/tests/fixtures/practice/irrigated-complete/invalid.json +0 -47
  254. package/tests/fixtures/practice/irrigated-complete/valid-incomplete.json +0 -47
  255. package/tests/fixtures/practice/irrigated-complete/valid.json +0 -60
  256. package/tests/fixtures/practice/landCover-products/invalid.json +0 -58
  257. package/tests/fixtures/practice/landCover-products/valid-coverCrop.json +0 -69
  258. package/tests/fixtures/practice/landCover-products/valid.json +0 -58
  259. package/tests/fixtures/practice/liveAnimal-system/invalid.json +0 -58
  260. package/tests/fixtures/practice/liveAnimal-system/valid.json +0 -69
  261. package/tests/fixtures/practice/longFallowDuration/invalid.json +0 -20
  262. package/tests/fixtures/practice/longFallowDuration/valid.json +0 -20
  263. package/tests/fixtures/practice/noTillage/invalid.json +0 -23
  264. package/tests/fixtures/practice/noTillage/valid-value-not-100.json +0 -23
  265. package/tests/fixtures/practice/noTillage/valid.json +0 -21
  266. package/tests/fixtures/practice/pastureGrass/key-termType/invalid.json +0 -16
  267. package/tests/fixtures/practice/pastureGrass/key-termType/valid.json +0 -16
  268. package/tests/fixtures/practice/pastureGrass/key-value/invalid-numbers.json +0 -67
  269. package/tests/fixtures/practice/pastureGrass/key-value/invalid.json +0 -67
  270. package/tests/fixtures/practice/pastureGrass/key-value/valid.json +0 -67
  271. package/tests/fixtures/practice/pastureGrass/permanent-pasture/invalid.json +0 -37
  272. package/tests/fixtures/practice/pastureGrass/permanent-pasture/valid.json +0 -47
  273. package/tests/fixtures/practice/primaryPercent/invalid.json +0 -49
  274. package/tests/fixtures/practice/primaryPercent/valid.json +0 -49
  275. package/tests/fixtures/practice/processingOperation/invalid-no-primary.json +0 -48
  276. package/tests/fixtures/practice/processingOperation/invalid.json +0 -49
  277. package/tests/fixtures/practice/processingOperation/valid-cropland.json +0 -37
  278. package/tests/fixtures/practice/processingOperation/valid.json +0 -49
  279. package/tests/fixtures/practice/productivePhasePermanentCrops/invalid.json +0 -48
  280. package/tests/fixtures/practice/productivePhasePermanentCrops/valid-0-value.json +0 -58
  281. package/tests/fixtures/practice/productivePhasePermanentCrops/valid-no-value.json +0 -47
  282. package/tests/fixtures/practice/productivePhasePermanentCrops/valid.json +0 -48
  283. package/tests/fixtures/practice/site-management/invalid.json +0 -75
  284. package/tests/fixtures/practice/site-management/valid.json +0 -75
  285. package/tests/fixtures/practice/tillage-siteType/valid.json +0 -51
  286. package/tests/fixtures/practice/tillage-siteType/warning.json +0 -42
  287. package/tests/fixtures/practice/tillage-values/invalid-fullTillage.json +0 -61
  288. package/tests/fixtures/practice/tillage-values/invalid-noTillage.json +0 -61
  289. package/tests/fixtures/practice/tillage-values/valid.json +0 -61
  290. package/tests/fixtures/practice/waterRegime/rice/invalid.json +0 -59
  291. package/tests/fixtures/practice/waterRegime/rice/valid-0-value.json +0 -59
  292. package/tests/fixtures/practice/waterRegime/rice/valid.json +0 -58
  293. package/tests/fixtures/product/economicValueShare/invalid.json +0 -31
  294. package/tests/fixtures/product/economicValueShare/valid.json +0 -22
  295. package/tests/fixtures/product/excreta/invalid.json +0 -62
  296. package/tests/fixtures/product/excreta/valid.json +0 -62
  297. package/tests/fixtures/product/excreta/warning.json +0 -53
  298. package/tests/fixtures/product/excreta/with-system/invalid.json +0 -79
  299. package/tests/fixtures/product/excreta/with-system/valid.json +0 -88
  300. package/tests/fixtures/product/excreta/with-system/warning.json +0 -70
  301. package/tests/fixtures/product/fu_ha/invalid.json +0 -49
  302. package/tests/fixtures/product/fu_ha/valid.json +0 -49
  303. package/tests/fixtures/product/primary/invalid.json +0 -22
  304. package/tests/fixtures/product/primary/valid.json +0 -22
  305. package/tests/fixtures/product/value/valid.json +0 -26
  306. package/tests/fixtures/product/value/value-0/error.json +0 -40
  307. package/tests/fixtures/product/value/value-empty/warning.json +0 -23
  308. package/tests/fixtures/product/yield/invalid.json +0 -54
  309. package/tests/fixtures/product/yield/no-value.json +0 -75
  310. package/tests/fixtures/product/yield/valid.json +0 -54
  311. package/tests/fixtures/property/default-value/valid-allowed-exception.json +0 -61
  312. package/tests/fixtures/property/default-value/valid.json +0 -61
  313. package/tests/fixtures/property/default-value/warning.json +0 -61
  314. package/tests/fixtures/property/termType/invalid.json +0 -60
  315. package/tests/fixtures/property/termType/valid.json +0 -60
  316. package/tests/fixtures/property/value-min-max/invalid.json +0 -77
  317. package/tests/fixtures/property/value-min-max/valid-skip-maximum.json +0 -57
  318. package/tests/fixtures/property/value-min-max/valid.json +0 -78
  319. package/tests/fixtures/property/valueType/invalid.json +0 -79
  320. package/tests/fixtures/property/valueType/valid.json +0 -79
  321. package/tests/fixtures/property/volatileSolidsContent/invalid.json +0 -99
  322. package/tests/fixtures/property/volatileSolidsContent/valid.json +0 -99
  323. package/tests/fixtures/shared/coordinates/invalid.json +0 -18
  324. package/tests/fixtures/shared/coordinates/valid.json +0 -18
  325. package/tests/fixtures/shared/data-duplicates/valid.json +0 -113
  326. package/tests/fixtures/shared/data-duplicates/warning.json +0 -172
  327. package/tests/fixtures/shared/duplicated-term-units/invalid-animalProduct.json +0 -61
  328. package/tests/fixtures/shared/duplicated-term-units/invalid-organicFertiliser.json +0 -61
  329. package/tests/fixtures/shared/duplicated-term-units/valid.json +0 -49
  330. package/tests/fixtures/shared/list-country-region/invalid.json +0 -54
  331. package/tests/fixtures/shared/list-country-region/valid.json +0 -54
  332. package/tests/fixtures/shared/list-percent-value/invalid.json +0 -49
  333. package/tests/fixtures/shared/list-percent-value/valid.json +0 -52
  334. package/tests/fixtures/shared/list-valueType/invalid.json +0 -49
  335. package/tests/fixtures/shared/list-valueType/valid.json +0 -49
  336. package/tests/fixtures/shared/list-values-sum-100/management/with-properties/valid.json +0 -91
  337. package/tests/fixtures/shared/list-values-sum-100/measurements/missing-soil.json +0 -46
  338. package/tests/fixtures/shared/list-values-sum-100/measurements/no-depth-high-value.json +0 -63
  339. package/tests/fixtures/shared/list-values-sum-100/measurements/no-depth-valid.json +0 -40
  340. package/tests/fixtures/shared/list-values-sum-100/measurements/with-depth-high-value.json +0 -71
  341. package/tests/fixtures/shared/list-values-sum-100/practices/total-100.json +0 -61
  342. package/tests/fixtures/shared/list-values-sum-100/practices/total-110.json +0 -61
  343. package/tests/fixtures/shared/list-values-sum-100/practices/total-90.json +0 -61
  344. package/tests/fixtures/shared/min-max/value-above.json +0 -31
  345. package/tests/fixtures/shared/min-max/value-below.json +0 -31
  346. package/tests/fixtures/shared/min-max/value-valid.json +0 -45
  347. package/tests/fixtures/shared/model/emissions/invalid.json +0 -102
  348. package/tests/fixtures/shared/model/emissions/valid-variable-tolerance.json +0 -180
  349. package/tests/fixtures/shared/model/emissions/valid.json +0 -102
  350. package/tests/fixtures/shared/model/impacts/invalid.json +0 -75
  351. package/tests/fixtures/shared/model/impacts/valid.json +0 -75
  352. package/tests/fixtures/shared/model/inputs/valid-no-value.json +0 -84
  353. package/tests/fixtures/shared/model/inputs/valid.json +0 -87
  354. package/tests/fixtures/shared/model/inputs/warning.json +0 -87
  355. package/tests/fixtures/shared/model/products/valid-no-value.json +0 -88
  356. package/tests/fixtures/shared/model/products/valid.json +0 -91
  357. package/tests/fixtures/shared/model/products/warning.json +0 -91
  358. package/tests/fixtures/shared/otherModel/invalid.json +0 -69
  359. package/tests/fixtures/shared/otherModel/valid.json +0 -70
  360. package/tests/fixtures/shared/properties-duplicate-values/invalid.json +0 -61
  361. package/tests/fixtures/shared/properties-duplicate-values/valid.json +0 -57
  362. package/tests/fixtures/shared/properties-same-length/invalid.json +0 -62
  363. package/tests/fixtures/shared/properties-same-length/valid.json +0 -52
  364. package/tests/fixtures/shared/unit-percent/invalid.json +0 -34
  365. package/tests/fixtures/shared/unit-percent/valid.json +0 -60
  366. package/tests/fixtures/shared/unit-percent/warning.json +0 -52
  367. package/tests/fixtures/site/cycles-linked-ia/invalid.json +0 -129
  368. package/tests/fixtures/site/cycles-linked-ia/valid.json +0 -129
  369. package/tests/fixtures/site/valid.json +0 -138
  370. package/tests/fixtures/source/valid.json +0 -19
  371. package/tests/fixtures/transformation/excretaManagement/invalid.json +0 -47
  372. package/tests/fixtures/transformation/excretaManagement/valid.json +0 -59
  373. package/tests/fixtures/transformation/inputs-products/invalid.json +0 -43
  374. package/tests/fixtures/transformation/inputs-products/valid.json +0 -43
  375. package/tests/fixtures/transformation/linked-emission/invalid.json +0 -101
  376. package/tests/fixtures/transformation/linked-emission/valid.json +0 -107
  377. package/tests/fixtures/transformation/previousTransformationId/invalid-no-previous.json +0 -127
  378. package/tests/fixtures/transformation/previousTransformationId/invalid-previous-input.json +0 -100
  379. package/tests/fixtures/transformation/previousTransformationId/invalid-product-input.json +0 -106
  380. package/tests/fixtures/transformation/previousTransformationId/invalid-wrong-order.json +0 -136
  381. package/tests/fixtures/transformation/previousTransformationId/valid.json +0 -171
  382. package/tests/integration/__init__.py +0 -0
  383. package/tests/integration/test_product.py +0 -17
  384. package/tests/test_gee.py +0 -10
  385. package/tests/test_utils.py +0 -36
  386. package/tests/test_validation.py +0 -11
  387. package/tests/utils.py +0 -28
  388. package/tests/validators/__init__.py +0 -0
  389. package/tests/validators/test_aggregated_cycle.py +0 -44
  390. package/tests/validators/test_aggregated_shared.py +0 -63
  391. package/tests/validators/test_animal.py +0 -72
  392. package/tests/validators/test_completeness.py +0 -337
  393. package/tests/validators/test_cycle.py +0 -600
  394. package/tests/validators/test_emission.py +0 -170
  395. package/tests/validators/test_impact_assessment.py +0 -80
  396. package/tests/validators/test_indicator.py +0 -120
  397. package/tests/validators/test_infrastructure.py +0 -26
  398. package/tests/validators/test_input.py +0 -434
  399. package/tests/validators/test_management.py +0 -177
  400. package/tests/validators/test_measurement.py +0 -317
  401. package/tests/validators/test_organisation.py +0 -32
  402. package/tests/validators/test_practice.py +0 -490
  403. package/tests/validators/test_product.py +0 -291
  404. package/tests/validators/test_property.py +0 -143
  405. package/tests/validators/test_shared.py +0 -1139
  406. package/tests/validators/test_site.py +0 -151
  407. package/tests/validators/test_source.py +0 -15
  408. package/tests/validators/test_transformation.py +0 -151
  409. package/tests/validators/test_validators.py +0 -74
  410. package/tsconfig.dist.json +0 -9
  411. package/tsconfig.json +0 -25
@@ -1,151 +0,0 @@
1
- from unittest.mock import patch
2
- import os
3
- import json
4
- from hestia_earth.schema import SiteSiteType
5
-
6
- from tests.utils import fixtures_path
7
- from hestia_earth.validation.utils import _group_nodes
8
- from hestia_earth.validation.validators.site import (
9
- validate_site,
10
- validate_site_dates,
11
- validate_site_coordinates,
12
- validate_siteType,
13
- validate_cycle_dates,
14
- validate_cycles_linked_ia,
15
- )
16
-
17
- fixtures_folder = os.path.join(fixtures_path, "site")
18
- class_path = "hestia_earth.validation.validators.site"
19
-
20
-
21
- @patch(f"{class_path}.validate_boundary_area", return_value=True)
22
- @patch(f"{class_path}.validate_region_size", return_value=True)
23
- @patch(f"{class_path}.validate_coordinates", return_value=True)
24
- def test_validate_site_valid(*args):
25
- with open(f"{fixtures_folder}/valid.json") as f:
26
- node = json.load(f)
27
- results = validate_site(node)
28
- assert all([r is True for r in results])
29
-
30
-
31
- def test_validate_site_dates_valid():
32
- site = {"startDate": "2020-01-01", "endDate": "2020-01-02"}
33
- assert validate_site_dates(site) is True
34
-
35
-
36
- def test_validate_site_dates_invalid():
37
- site = {"startDate": "2020-01-02", "endDate": "2020-01-01"}
38
- assert validate_site_dates(site) == {
39
- "level": "error",
40
- "dataPath": ".endDate",
41
- "message": "must be greater than startDate",
42
- }
43
-
44
-
45
- @patch(f"{class_path}.need_validate_coordinates", return_value=True)
46
- def test_validate_site_coordinates(*args):
47
- site = {"siteType": SiteSiteType.CROPLAND.value}
48
- assert validate_site_coordinates(site)
49
-
50
- site["siteType"] = SiteSiteType.SEA_OR_OCEAN.value
51
- assert not validate_site_coordinates(site)
52
-
53
-
54
- @patch(f"{class_path}.get_cached_data", return_value=25)
55
- def test_validate_siteType_valid(*args):
56
- site = {
57
- "siteType": SiteSiteType.FOREST.value,
58
- "latitude": 44.18753,
59
- "longitude": -0.62521,
60
- }
61
- assert validate_siteType(site) is True
62
-
63
- site = {
64
- "siteType": SiteSiteType.CROPLAND.value,
65
- "latitude": 44.5096,
66
- "longitude": 0.40749,
67
- }
68
- assert validate_siteType(site) is True
69
-
70
-
71
- @patch(f"{class_path}.get_cached_data", return_value=30)
72
- def test_validate_siteType_invalid(*args):
73
- site = {
74
- "siteType": SiteSiteType.CROPLAND.value,
75
- "latitude": 44.18753,
76
- "longitude": -0.62521,
77
- }
78
- assert validate_siteType(site) == {
79
- "level": "warning",
80
- "dataPath": ".siteType",
81
- "message": "The coordinates you have provided are not in a known cropland "
82
- "area according to the MODIS Land Cover classification (MCD12Q1.006, LCCS2, bands 25, 35, 36).",
83
- }
84
-
85
- site = {
86
- "siteType": SiteSiteType.FOREST.value,
87
- "latitude": 44.5096,
88
- "longitude": 0.40749,
89
- }
90
- assert validate_siteType(site) == {
91
- "level": "warning",
92
- "dataPath": ".siteType",
93
- "message": "The coordinates you have provided are not in a known forest "
94
- "area according to the MODIS Land Cover classification (MCD12Q1.006, LCCS2, bands 10, 20, 25).",
95
- }
96
-
97
-
98
- def test_validate_cycle_dates_valid():
99
- cycles = [{"endDate": "2020"}, {"endDate": "2021"}]
100
- assert validate_cycle_dates(cycles) is True
101
-
102
- cycles = [
103
- {"startDate": "2020-01-01", "endDate": "2020-06-30"},
104
- {"startDate": "2020-07-01", "endDate": "2020-12-31"},
105
- ]
106
- assert validate_cycle_dates(cycles) is True
107
-
108
-
109
- def test_validate_cycle_dates_invalid():
110
- cycles = [
111
- {"id": "cycle1", "endDate": "2020"},
112
- {"id": "cycle2", "endDate": "2020"},
113
- {"id": "cycle3", "endDate": "2021"},
114
- ]
115
- assert validate_cycle_dates(cycles) == {
116
- "level": "error",
117
- "dataPath": "",
118
- "message": "multiple cycles on the same site cannot overlap",
119
- "params": {"ids": ["cycle1", "cycle2"]},
120
- }
121
-
122
- cycles = [
123
- {"id": "cycle1", "startDate": "2020-01-01", "endDate": "2020-07-02"},
124
- {"id": "cycle2", "startDate": "2020-07-01", "endDate": "2020-12-31"},
125
- {"id": "cycle3", "startDate": "2021-01-01", "endDate": "2021-12-31"},
126
- ]
127
- assert validate_cycle_dates(cycles) == {
128
- "level": "error",
129
- "dataPath": "",
130
- "message": "multiple cycles on the same site cannot overlap",
131
- "params": {"ids": ["cycle1", "cycle2"]},
132
- }
133
-
134
-
135
- def test_validate_cycles_linked_ia_valid():
136
- with open(f"{fixtures_folder}/cycles-linked-ia/valid.json") as f:
137
- nodes = json.load(f).get("nodes")
138
- cycles = [c for c in nodes if c.get("type") == "Cycle"]
139
- assert validate_cycles_linked_ia(cycles, _group_nodes(nodes)) is True
140
-
141
-
142
- def test_validate_cycles_linked_ia_invalid():
143
- with open(f"{fixtures_folder}/cycles-linked-ia/invalid.json") as f:
144
- nodes = json.load(f).get("nodes")
145
- cycles = [c for c in nodes if c.get("type") == "Cycle"]
146
- assert validate_cycles_linked_ia(cycles, _group_nodes(nodes)) == {
147
- "level": "error",
148
- "dataPath": "",
149
- "message": "cycles linked together cannot be added to the same site",
150
- "params": {"ids": ["2"]},
151
- }
@@ -1,15 +0,0 @@
1
- import os
2
- import json
3
-
4
- from tests.utils import fixtures_path
5
- from hestia_earth.validation.validators.source import validate_source
6
-
7
- fixtures_folder = os.path.join(fixtures_path, "source")
8
- class_path = "hestia_earth.validation.validators.source"
9
-
10
-
11
- def test_validate_valid():
12
- with open(f"{fixtures_path}/source/valid.json") as f:
13
- node = json.load(f)
14
- results = validate_source(node)
15
- assert all([r is True for r in results])
@@ -1,151 +0,0 @@
1
- import json
2
- from unittest.mock import patch
3
-
4
- from tests.utils import fixtures_path
5
- from hestia_earth.validation.validators.transformation import (
6
- validate_previous_transformation,
7
- validate_transformation_excretaManagement,
8
- validate_linked_emission,
9
- validate_excreta_inputs_products,
10
- )
11
-
12
- class_path = "hestia_earth.validation.validators.transformation"
13
- fixtures_folder = f"{fixtures_path}/transformation"
14
-
15
-
16
- def test_validate_previous_transformation_valid():
17
- # no transformations should be valid
18
- assert validate_previous_transformation({}, "transformations") is True
19
-
20
- with open(f"{fixtures_folder}/previousTransformationId/valid.json") as f:
21
- cycle = json.load(f)
22
- assert validate_previous_transformation(cycle) is True
23
-
24
-
25
- def test_validate_previous_transformation_invalid():
26
- with open(
27
- f"{fixtures_folder}/previousTransformationId/invalid-wrong-order.json"
28
- ) as f:
29
- cycle = json.load(f)
30
- assert validate_previous_transformation(cycle) == {
31
- "level": "error",
32
- "dataPath": ".transformations[1].previousTransformationId",
33
- "message": "must point to a previous transformation in the list",
34
- }
35
-
36
- with open(
37
- f"{fixtures_folder}/previousTransformationId/invalid-no-previous.json"
38
- ) as f:
39
- cycle = json.load(f)
40
- assert validate_previous_transformation(cycle) == {
41
- "level": "error",
42
- "dataPath": ".transformations[1].previousTransformationId",
43
- "message": "must point to a previous transformation in the list",
44
- }
45
-
46
- with open(
47
- f"{fixtures_folder}/previousTransformationId/invalid-product-input.json"
48
- ) as f:
49
- cycle = json.load(f)
50
- assert validate_previous_transformation(cycle) == {
51
- "level": "error",
52
- "dataPath": ".transformations[1].inputs[0].value",
53
- "message": "must be equal to previous product multiplied by the share",
54
- }
55
-
56
- with open(
57
- f"{fixtures_folder}/previousTransformationId/invalid-previous-input.json"
58
- ) as f:
59
- cycle = json.load(f)
60
- assert validate_previous_transformation(cycle) == [
61
- {
62
- "level": "error",
63
- "dataPath": ".transformations[0]",
64
- "message": "at least one Input must be a Product of the Cycle",
65
- },
66
- {
67
- "level": "error",
68
- "dataPath": ".transformations[1]",
69
- "message": "at least one Input must be a Product of the previous Transformation",
70
- },
71
- ]
72
-
73
-
74
- def test_validate_transformation_excretaManagement_valid():
75
- # no transformations should be valid
76
- assert validate_transformation_excretaManagement({}, "transformations")
77
-
78
- with open(f"{fixtures_folder}/excretaManagement/valid.json") as f:
79
- cycle = json.load(f)
80
- assert validate_transformation_excretaManagement(cycle) is True
81
-
82
-
83
- def test_validate_transformation_excretaManagement_invalid():
84
- with open(f"{fixtures_folder}/excretaManagement/invalid.json") as f:
85
- cycle = json.load(f)
86
- assert validate_transformation_excretaManagement(cycle) == {
87
- "level": "error",
88
- "dataPath": ".transformations[0].practices",
89
- "message": "an excreta input is required when using an excretaManagement practice",
90
- }
91
-
92
-
93
- def test_validate_linked_emission_valid():
94
- # no emissions should be valid
95
- assert validate_linked_emission({}, "transformations") is True
96
-
97
- with open(f"{fixtures_folder}/linked-emission/valid.json") as f:
98
- data = json.load(f)
99
- assert validate_linked_emission(data, "transformations") is True
100
-
101
-
102
- def test_validate_linked_emission_invalid():
103
- with open(f"{fixtures_folder}/linked-emission/invalid.json") as f:
104
- data = json.load(f)
105
- assert validate_linked_emission(data, "transformations") == {
106
- "level": "warning",
107
- "dataPath": ".transformations[0].emissions[0]",
108
- "message": "should be linked to an emission in the Cycle",
109
- "params": {
110
- "term": {
111
- "@type": "Term",
112
- "@id": "ch4ToAirEntericFermentation",
113
- "termType": "emission",
114
- }
115
- },
116
- }
117
-
118
-
119
- def test_validate_excreta_inputs_products_valid():
120
- # no transformations should be valid
121
- assert validate_excreta_inputs_products([]) is True
122
-
123
- with open(f"{fixtures_folder}/inputs-products/valid.json") as f:
124
- data = json.load(f)
125
- assert validate_excreta_inputs_products(data) is True
126
-
127
-
128
- def fake_download_excreta(term_id: str, *args):
129
- return {
130
- "processedExcretaKgVs": {},
131
- "excretaBeefCattleExceptFeedlotFedKgMass": {"subClassOf": [{}]},
132
- }[term_id]
133
-
134
-
135
- @patch(f"{class_path}.download_hestia", side_effect=fake_download_excreta)
136
- def test_validate_excreta_inputs_products_invalid(*args):
137
- with open(f"{fixtures_folder}/inputs-products/invalid.json") as f:
138
- data = json.load(f)
139
- assert validate_excreta_inputs_products(data) == {
140
- "level": "error",
141
- "dataPath": ".transformations[0].products[1]",
142
- "message": "must be included as an Input",
143
- "params": {
144
- "term": {
145
- "@type": "Term",
146
- "@id": "excretaBeefCattleExceptFeedlotFedKgMass",
147
- "termType": "excreta",
148
- },
149
- "expected": ["excretaDairyCattle"],
150
- },
151
- }
@@ -1,74 +0,0 @@
1
- from unittest.mock import patch
2
- import json
3
- from hestia_earth.schema import NodeType
4
-
5
- from tests.utils import fixtures_path
6
- from hestia_earth.validation.validators import validate_node, _should_run
7
-
8
- class_path = "hestia_earth.validation.validators"
9
-
10
-
11
- def test_should_run():
12
- ntype = NodeType.CYCLE.value
13
- node = {"@type": ntype, "@id": "cycle"}
14
- assert not _should_run(ntype, node)
15
-
16
- node = {"@type": ntype, "@id": "cycle", "name": "Cycle 1"}
17
- assert not _should_run(ntype, node)
18
-
19
- node = {"@type": ntype, "@id": "cycle", "name": "Cycle 1", "endDate": "2020-01-01"}
20
- assert _should_run(ntype, node) is True
21
-
22
-
23
- @patch(f"{class_path}.validate_site")
24
- def test_validate_node_type_validation(mock_validate_site):
25
- node = {
26
- "type": NodeType.SITE.value,
27
- "id": "id",
28
- "siteType": "cropland",
29
- "country": {"@id": "GADM-GBR"},
30
- }
31
- validate_node()(node)
32
- mock_validate_site.assert_called_once()
33
-
34
- # no validation on existing nodes
35
- mock_validate_site.reset_mock()
36
- node = {"@type": NodeType.SITE.value}
37
- validate_node()(node)
38
- mock_validate_site.assert_not_called()
39
-
40
-
41
- def test_validate_node_no_validation():
42
- # no validation on uploaded Actor
43
- node = {"type": NodeType.ACTOR.value}
44
- assert validate_node([])(node) == []
45
-
46
-
47
- @patch(f"{class_path}.validate_cycle")
48
- @patch(f"{class_path}.validate_impact_assessment")
49
- @patch(f"{class_path}.validate_site")
50
- def test_validate_nested(
51
- mock_validate_site, mock_validate_impact_assessment, mock_validate_cycle
52
- ):
53
- with open(f"{fixtures_path}/impactAssessment/valid.json") as f:
54
- node = json.load(f)
55
- assert validate_node()(node) == []
56
- assert mock_validate_cycle.call_count == 1
57
- assert mock_validate_impact_assessment.call_count == 1
58
- assert mock_validate_site.call_count == 2
59
-
60
-
61
- @patch(f"{class_path}.validate_cycle")
62
- @patch(f"{class_path}.validate_impact_assessment")
63
- @patch(f"{class_path}.validate_site")
64
- def test_validate_nested_aggregated(
65
- mock_validate_site, mock_validate_impact_assessment, mock_validate_cycle
66
- ):
67
- with open(f"{fixtures_path}/impactAssessment/valid.json") as f:
68
- node = json.load(f)
69
-
70
- node["aggregated"] = True
71
- assert validate_node()(node) == []
72
- assert mock_validate_cycle.call_count == 0
73
- assert mock_validate_impact_assessment.call_count == 1
74
- assert mock_validate_site.call_count == 0
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "./dist",
5
- "sourceMap": false
6
- },
7
- "include": ["./src/index.ts"],
8
- "exclude": ["./src/**/*.spec.ts"]
9
- }
package/tsconfig.json DELETED
@@ -1,25 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es5",
4
- "module": "commonjs",
5
- "stripInternal": true,
6
- "emitDecoratorMetadata": true,
7
- "experimentalDecorators": true,
8
- "removeComments": false,
9
- "noImplicitAny": false,
10
- "skipLibCheck": true,
11
- "lib": ["es2019"],
12
- "baseUrl": ".",
13
- "rootDir": "./src",
14
- "outDir": "./dist",
15
- "sourceMap": true,
16
- "declaration": true,
17
- "downlevelIteration": true,
18
- "resolveJsonModule": true
19
- },
20
- "include": ["src/**/*.ts"],
21
- "exclude": ["node_modules"],
22
- "atom": {
23
- "rewriteTsconfig": false
24
- }
25
- }