hdx-python-scraper 2.6.5__tar.gz → 2.7.1__tar.gz

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 (150) hide show
  1. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/.pre-commit-config.yaml +6 -5
  2. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/PKG-INFO +5 -5
  3. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/documentation/index.md +2 -0
  4. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/hatch.toml +1 -1
  5. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/pyproject.toml +4 -4
  6. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/requirements.txt +50 -153
  7. hdx_python_scraper-2.7.1/ruff.toml +10 -0
  8. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/_version.py +16 -3
  9. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/base_scraper.py +49 -49
  10. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/outputs/base.py +21 -21
  11. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/outputs/excelfile.py +10 -10
  12. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/outputs/googlesheets.py +16 -17
  13. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/outputs/json.py +38 -36
  14. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/runner.py +231 -229
  15. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/scrapers/aggregator.py +45 -45
  16. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/scrapers/configurable_scraper.py +39 -38
  17. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/scrapers/resource_downloader.py +6 -6
  18. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/scrapers/rowparser.py +52 -53
  19. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/scrapers/timeseries.py +8 -8
  20. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/__init__.py +14 -14
  21. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/fallbacks.py +13 -19
  22. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/hapi_admins.py +20 -22
  23. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/lookup.py +17 -16
  24. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/reader.py +119 -119
  25. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/region_lookup.py +9 -9
  26. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/sources.py +52 -53
  27. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/writer.py +72 -72
  28. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/conftest.py +11 -10
  29. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/custom/affected_targeted_reached.py +3 -2
  30. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/custom/education_closures.py +3 -3
  31. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/custom/education_enrolment.py +2 -1
  32. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/custom/test_custom.py +6 -5
  33. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/outputs/test_output.py +10 -11
  34. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/test_aggregation.py +4 -2
  35. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/test_appenddata.py +4 -3
  36. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/test_global.py +3 -2
  37. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/test_multipleurls.py +4 -2
  38. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/test_national.py +6 -4
  39. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/test_regionaltoplevel.py +4 -2
  40. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/test_resource_downloaders.py +4 -4
  41. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/test_subnational.py +4 -2
  42. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/test_timeseries.py +2 -1
  43. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/test_runner.py +4 -2
  44. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/utilities/test_hapi_admins.py +1 -0
  45. hdx_python_scraper-2.6.5/ruff.toml +0 -15
  46. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/.coveragerc +0 -0
  47. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/.github/workflows/publish.yaml +0 -0
  48. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/.github/workflows/run-python-tests.yaml +0 -0
  49. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/.gitignore +0 -0
  50. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/CONTRIBUTING.md +0 -0
  51. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/LICENSE +0 -0
  52. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/README.md +0 -0
  53. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/documentation/.readthedocs.yaml +0 -0
  54. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/documentation/mkdocs.yaml +0 -0
  55. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/pytest.ini +0 -0
  56. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/__init__.py +0 -0
  57. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/outputs/__init__.py +0 -0
  58. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/scrapers/__init__.py +0 -0
  59. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/org_type.py +0 -0
  60. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/org_type_configuration.yaml +0 -0
  61. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/sector.py +0 -0
  62. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/src/hdx/scraper/framework/utilities/sector_configuration.yaml +0 -0
  63. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/config/project_configuration.yaml +0 -0
  64. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/access_2pacx-1vrszjzuyvt9i-mkrq2hbxrul2lx2vihkthqm-lae8nyhqty70zqtcufs3pxbhzgat1l2bkoa4-daoap-pub-gid-574237756-single-true-output-csv.csv +0 -0
  65. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/additional-json.json +0 -0
  66. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/altworldindata_data-tagger-match-all-on-tagger-01-header-location-tagger-01-tag.csv +0 -0
  67. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/casualties_2pacx-1vqidedbzz0ehrc0b4fswip14r7mdtu1mpmwakuxupelsah2awcurkgalfduhjvyjul8vzzat3r1b5qg-pub-gid-0-single-true-output-csv.csv +0 -0
  68. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/cbpf-allocations-and-contributions.json +0 -0
  69. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/cbpf2-allocations-and-contributions.json +0 -0
  70. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/cerf-covid-19-allocations.json +0 -0
  71. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/cerf2-covid-19-allocations.json +0 -0
  72. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/cerf2_global_download-full-pfmb-allocations.csv +0 -0
  73. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/cerf_global_download-full-pfmb-allocations.csv +0 -0
  74. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/covax_2pacx-1vtvzu79pptfaa2syevoqfyrrjy63djwitqu0ffbxiqczoun9k9timwmrvfgg1rbsnlmgyugzseiaye2-pub-gid-992438980-single-true-output-csv.csv +0 -0
  75. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/covidtests_data-owid-covid-data.xlsx +0 -0
  76. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/download-global-pcode-lengths.csv +0 -0
  77. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/download-global-pcodes-adm-1-2.csv +0 -0
  78. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/education_closures_broken.xls +0 -0
  79. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/education_closures_school_closures.csv +0 -0
  80. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/education_enrolment_enrollment_data.xlsx +0 -0
  81. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/ethiopia-drought-related-key-figures.json +0 -0
  82. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/ethiopia-pin-targeted-reached-by-location-and-cluster.json +0 -0
  83. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/ethiopia_drought_affected_targeted_reached_by_cluster.csv +0 -0
  84. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/fallbacks.json +0 -0
  85. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/gam_download-unicef-who-wb-global-expanded-databases-severe-wasting.xlsx +0 -0
  86. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/gam_other_download-unicef-who-wb-global-expanded-databases-severe-wasting.xlsx +0 -0
  87. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/global-coordination-groups-beta.json +0 -0
  88. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/global-school-closures-covid19.json +0 -0
  89. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/hno_2017_sahel_nutrition.csv +0 -0
  90. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/hno_2017_sahel_people_in_need.xlsx +0 -0
  91. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/idmc-internally-displaced-persons-idps.json +0 -0
  92. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/idps_download-displacement-data.csv +0 -0
  93. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/idps_override_population-widget-id-264111-geo-id-693-population-group-54074999.json +0 -0
  94. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/idps_somalia_som_unhcr_prmn_displacement_dataset.xlsx +0 -0
  95. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/ipc_somalia_som_food_insecurity_oct_dec2022_projection.csv +0 -0
  96. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/kenya-drought-related-key-figures.json +0 -0
  97. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/kenya-pin-targeted-reached-by-location-and-cluster.json +0 -0
  98. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/kenya_drought_affected_targeted_reached_by_cluster.csv +0 -0
  99. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/key_figures_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-0-single-true-output-csv.csv +0 -0
  100. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/key_figures_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-1275038715-single-true-output-csv.csv +0 -0
  101. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/key_figures_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-2015311116-single-true-output-csv.csv +0 -0
  102. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/key_figures_eth_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-2015311116-single-true-output-csv.csv +0 -0
  103. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/key_figures_ken_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-1275038715-single-true-output-csv.csv +0 -0
  104. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/key_figures_som_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-0-single-true-output-csv.csv +0 -0
  105. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/org_type_organization_types_beta_csv.csv +0 -0
  106. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/organization-types-beta.json +0 -0
  107. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/ourworldindata_data-tagger-match-all-on-tagger-01-header-location-tagger-01-tag.csv +0 -0
  108. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/ourworldindata_other_data-tagger-match-all-on-tagger-01-header-location-tagger-01-tag.csv +0 -0
  109. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/oxcgrt_oxcgrt_csv.csv +0 -0
  110. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/oxford-covid-19-government-response-tracker.json +0 -0
  111. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/population.json +0 -0
  112. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/population_indicator-sp-pop-downloadformat-excel-dataformat-list-totl.xls +0 -0
  113. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/population_other_indicator-sp-pop-downloadformat-excel-dataformat-list-totl.xls +0 -0
  114. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/regions_tbl_regcov_2020_ocha.xlsx +0 -0
  115. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/resource_downloader_xlsx_ukr_border_crossings_090622.xlsx +0 -0
  116. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/sadd-countries-to-include.csv +0 -0
  117. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/sadd_covid-data-dataset-fullvars-extype-csv.csv +0 -0
  118. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/sahel-humanitarian-needs-overview.json +0 -0
  119. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/sahel-humanitarian-needs-overview_prefix.json +0 -0
  120. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/sector_global_coordination_groups_beta_csv.csv +0 -0
  121. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/somalia-acute-food-insecurity-country-data.json +0 -0
  122. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/somalia-drought-related-key-figures.json +0 -0
  123. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/somalia-internally-displaced-persons-idps.json +0 -0
  124. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/somalia-pin-targeted-reached-by-location-and-cluster.json +0 -0
  125. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/somalia_drought_affected_targeted_reached_by_cluster.csv +0 -0
  126. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/timeseries_casualties_2pacx-1vqidedbzz0ehrc0b4fswip14r7mdtu1mpmwakuxupelsah2awcurkgalfduhjvyjul8vzzat3r1b5qg-pub-gid-0-single-true-output-csv.csv +0 -0
  127. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/total-covid-19-tests-performed-by-country.json +0 -0
  128. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/ukraine-border-crossings.json +0 -0
  129. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/ukraine-who-does-what-where-3w.json +0 -0
  130. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/unocha-office-locations.json +0 -0
  131. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/who_national2_who-covid-19-global-data.csv +0 -0
  132. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/who_national3_who-covid-19-global-data.csv +0 -0
  133. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/who_national_who-covid-19-global-data.csv +0 -0
  134. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/whowhatwhere_afg_3w_data.csv +0 -0
  135. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/input/whowhatwhere_notags_3w_data.csv +0 -0
  136. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/test_output.xlsx +0 -0
  137. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/test_scraper_all.json +0 -0
  138. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/test_scraper_other.json +0 -0
  139. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/fixtures/test_scraper_population.json +0 -0
  140. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/__init__.py +0 -0
  141. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/custom/__init__.py +0 -0
  142. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/outputs/__init__.py +0 -0
  143. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/__init__.py +0 -0
  144. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/scrapers/unhcr_myanmar_idps.py +0 -0
  145. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/utilities/__init__.py +0 -0
  146. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/utilities/test_lookup.py +0 -0
  147. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/utilities/test_readers.py +2 -2
  148. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/utilities/test_regionlookup.py +0 -0
  149. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/utilities/test_sources.py +2 -2
  150. {hdx_python_scraper-2.6.5 → hdx_python_scraper-2.7.1}/tests/hdx/scraper/framework/utilities/test_utils.py +0 -0
@@ -2,25 +2,26 @@ default_language_version:
2
2
  python: python3.13
3
3
  repos:
4
4
  - repo: https://github.com/pre-commit/pre-commit-hooks
5
- rev: v5.0.0
5
+ rev: v6.0.0
6
6
  hooks:
7
7
  - id: trailing-whitespace
8
8
  - id: end-of-file-fixer
9
9
  exclude: test_scraper_.*\.json
10
10
  - id: check-ast
11
11
  - repo: https://github.com/astral-sh/ruff-pre-commit
12
- rev: v0.9.10
12
+ rev: v0.14.10
13
13
  hooks:
14
14
  # Run the linter.
15
- - id: ruff
15
+ - id: ruff-check
16
16
  args: [ --fix ]
17
17
  # Run the formatter.
18
18
  - id: ruff-format
19
19
  - repo: https://github.com/astral-sh/uv-pre-commit
20
- rev: 0.6.5
20
+ rev: 0.9.22
21
21
  hooks:
22
22
  # Run the pip compile
23
23
  - id: pip-compile
24
24
  name: pip-compile requirements.txt
25
25
  files: pyproject.toml
26
- args: [ pyproject.toml, --resolver=backtracking, --all-extras, --upgrade, -q, -o, requirements.txt ]
26
+ args: [ pyproject.toml, --resolver=backtracking, --upgrade, -q,
27
+ -o, requirements.txt ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hdx-python-scraper
3
- Version: 2.6.5
3
+ Version: 2.7.1
4
4
  Summary: HDX Python scraper utilities to assemble data from multiple sources
5
5
  Project-URL: Homepage, https://github.com/OCHA-DAP/hdx-python-scraper
6
6
  Author-email: Michael Rans <rans@email.com>
@@ -24,11 +24,11 @@ Classifier: Programming Language :: Python :: 3.10
24
24
  Classifier: Programming Language :: Python :: 3.11
25
25
  Classifier: Programming Language :: Python :: 3.12
26
26
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
- Requires-Python: >=3.8
27
+ Requires-Python: >=3.10
28
28
  Requires-Dist: gspread
29
- Requires-Dist: hdx-python-api>=6.4.0
30
- Requires-Dist: hdx-python-country>=3.9.4
31
- Requires-Dist: hdx-python-utilities>=3.8.7
29
+ Requires-Dist: hdx-python-api>=6.6.1
30
+ Requires-Dist: hdx-python-country>=4.0.1
31
+ Requires-Dist: hdx-python-utilities>=4.0.2
32
32
  Requires-Dist: regex
33
33
  Provides-Extra: dev
34
34
  Requires-Dist: pre-commit; extra == 'dev'
@@ -26,6 +26,8 @@ install with:
26
26
  pip install hdx-python-scraper[pandas]
27
27
 
28
28
  ## Breaking Changes
29
+ From 2.7.0, Python 3.10 or later is required
30
+
29
31
  From 2.5.0, package names have changed to avoid name space clashes
30
32
 
31
33
  From 2.3.0, resource name is used when available instead of creating name from
@@ -34,4 +34,4 @@ run = """
34
34
 
35
35
  [envs.hatch-static-analysis]
36
36
  config-path = "none"
37
- dependencies = ["ruff==0.9.10"]
37
+ dependencies = ["ruff==0.14.10"]
@@ -31,12 +31,12 @@ classifiers = [
31
31
  "Operating System :: MacOS",
32
32
  "Operating System :: Microsoft :: Windows",
33
33
  ]
34
- requires-python = ">=3.8"
34
+ requires-python = ">=3.10"
35
35
 
36
36
  dependencies = [
37
- "hdx-python-api>=6.4.0",
38
- "hdx-python-country>=3.9.4",
39
- "hdx-python-utilities>=3.8.7",
37
+ "hdx-python-api>=6.6.1",
38
+ "hdx-python-country>=4.0.1",
39
+ "hdx-python-utilities>=4.0.2",
40
40
  "gspread",
41
41
  "regex",
42
42
  ]
@@ -1,62 +1,40 @@
1
1
  # This file was autogenerated by uv via the following command:
2
- # uv pip compile pyproject.toml --resolver=backtracking --all-extras -o requirements.txt
2
+ # uv pip compile pyproject.toml --resolver=backtracking -o requirements.txt
3
3
  annotated-types==0.7.0
4
4
  # via pydantic
5
- astdoc==1.2.1
6
- # via mkapi
7
- attrs==25.3.0
5
+ attrs==25.4.0
8
6
  # via
9
7
  # frictionless
10
8
  # jsonlines
11
9
  # jsonschema
12
10
  # referencing
13
- babel==2.17.0
14
- # via mkdocs-material
15
- backrefs==5.8
16
- # via mkdocs-material
17
- cachetools==5.5.2
18
- # via google-auth
19
- certifi==2025.4.26
11
+ certifi==2026.1.4
20
12
  # via requests
21
- cfgv==3.4.0
22
- # via pre-commit
23
13
  chardet==5.2.0
24
14
  # via frictionless
25
- charset-normalizer==3.4.2
15
+ charset-normalizer==3.4.4
26
16
  # via requests
27
- ckanapi==4.8
17
+ ckanapi==4.9
28
18
  # via hdx-python-api
29
- click==8.1.8
30
- # via
31
- # mkdocs
32
- # typer
33
- colorama==0.4.6
34
- # via mkdocs-material
35
- coverage==7.8.0
36
- # via pytest-cov
37
- defopt==6.4.0
19
+ click==8.3.1
20
+ # via typer
21
+ defopt==7.0.0
38
22
  # via hdx-python-api
39
- distlib==0.3.9
40
- # via virtualenv
41
- dnspython==2.7.0
23
+ dnspython==2.8.0
42
24
  # via email-validator
43
25
  docopt==0.6.2
44
26
  # via
45
27
  # ckanapi
46
28
  # num2words
47
- docutils==0.21.2
29
+ docutils==0.22.4
48
30
  # via defopt
49
- email-validator==2.2.0
31
+ email-validator==2.3.0
50
32
  # via hdx-python-api
51
33
  et-xmlfile==2.0.0
52
34
  # via openpyxl
53
- filelock==3.18.0
54
- # via virtualenv
55
35
  frictionless==5.18.1
56
36
  # via hdx-python-utilities
57
- ghp-import==2.1.0
58
- # via mkdocs
59
- google-auth==2.40.1
37
+ google-auth==2.47.0
60
38
  # via
61
39
  # google-auth-oauthlib
62
40
  # gspread
@@ -64,48 +42,40 @@ google-auth-oauthlib==1.2.2
64
42
  # via gspread
65
43
  gspread==6.2.1
66
44
  # via hdx-python-scraper (pyproject.toml)
67
- hdx-python-api==6.4.0
45
+ hdx-python-api==6.6.1
68
46
  # via hdx-python-scraper (pyproject.toml)
69
- hdx-python-country==3.9.4
47
+ hdx-python-country==4.0.1
70
48
  # via
71
49
  # hdx-python-scraper (pyproject.toml)
72
50
  # hdx-python-api
73
- hdx-python-utilities==3.8.7
51
+ hdx-python-utilities==4.0.2
74
52
  # via
75
53
  # hdx-python-scraper (pyproject.toml)
76
54
  # hdx-python-api
77
55
  # hdx-python-country
78
- humanize==4.12.3
56
+ humanize==4.15.0
79
57
  # via frictionless
80
- identify==2.6.10
81
- # via pre-commit
82
- idna==3.10
58
+ idna==3.11
83
59
  # via
84
60
  # email-validator
85
61
  # requests
86
- ijson==3.4.0
62
+ ijson==3.4.0.post0
87
63
  # via hdx-python-utilities
88
64
  inflect==7.5.0
89
65
  # via quantulum3
90
- iniconfig==2.1.0
91
- # via pytest
92
66
  isodate==0.7.2
93
67
  # via frictionless
94
68
  jinja2==3.1.6
95
- # via
96
- # frictionless
97
- # mkapi
98
- # mkdocs
99
- # mkdocs-material
69
+ # via frictionless
100
70
  jsonlines==4.0.0
101
71
  # via hdx-python-utilities
102
72
  jsonpath-ng==1.7.0
103
73
  # via libhxl
104
- jsonschema==4.23.0
74
+ jsonschema==4.26.0
105
75
  # via
106
76
  # frictionless
107
77
  # tableschema-to-template
108
- jsonschema-specifications==2025.4.1
78
+ jsonschema-specifications==2025.9.1
109
79
  # via jsonschema
110
80
  libhxl==5.2.2
111
81
  # via
@@ -115,167 +85,100 @@ loguru==0.7.3
115
85
  # via hdx-python-utilities
116
86
  makefun==1.16.0
117
87
  # via hdx-python-api
118
- markdown==3.8
119
- # via
120
- # mkdocs
121
- # mkdocs-material
122
- # pymdown-extensions
123
- markdown-it-py==3.0.0
88
+ markdown-it-py==4.0.0
124
89
  # via rich
125
- marko==2.1.3
90
+ marko==2.2.2
126
91
  # via frictionless
127
- markupsafe==3.0.2
128
- # via
129
- # jinja2
130
- # mkdocs
92
+ markupsafe==3.0.3
93
+ # via jinja2
131
94
  mdurl==0.1.2
132
95
  # via markdown-it-py
133
- mergedeep==1.3.4
134
- # via
135
- # mkdocs
136
- # mkdocs-get-deps
137
- mkapi==4.4.0
138
- # via hdx-python-scraper (pyproject.toml)
139
- mkdocs==1.6.1
140
- # via
141
- # mkapi
142
- # mkdocs-material
143
- mkdocs-get-deps==0.2.0
144
- # via mkdocs
145
- mkdocs-material==9.6.14
146
- # via mkapi
147
- mkdocs-material-extensions==1.3.1
148
- # via mkdocs-material
149
- more-itertools==10.7.0
96
+ more-itertools==10.8.0
150
97
  # via inflect
151
- nodeenv==1.9.1
152
- # via pre-commit
153
98
  num2words==0.5.14
154
99
  # via quantulum3
155
- numpy==2.2.6
156
- # via pandas
157
- oauthlib==3.2.2
100
+ oauthlib==3.3.1
158
101
  # via requests-oauthlib
159
102
  openpyxl==3.1.5
160
103
  # via hdx-python-utilities
161
- packaging==25.0
162
- # via
163
- # mkdocs
164
- # pytest
165
- paginate==0.5.7
166
- # via mkdocs-material
167
- pandas==2.2.3
168
- # via hdx-python-scraper (pyproject.toml)
169
- pathspec==0.12.1
170
- # via mkdocs
171
- petl==1.7.16
104
+ petl==1.7.17
172
105
  # via frictionless
173
- platformdirs==4.3.8
174
- # via
175
- # mkdocs-get-deps
176
- # virtualenv
177
- pluggy==1.6.0
178
- # via pytest
179
106
  ply==3.11
180
107
  # via
181
108
  # jsonpath-ng
182
109
  # libhxl
183
110
  pockets==0.9.1
184
111
  # via sphinxcontrib-napoleon
185
- pre-commit==4.2.0
186
- # via hdx-python-scraper (pyproject.toml)
187
112
  pyasn1==0.6.1
188
113
  # via
189
114
  # pyasn1-modules
190
115
  # rsa
191
116
  pyasn1-modules==0.4.2
192
117
  # via google-auth
193
- pydantic==2.11.4
118
+ pydantic==2.12.5
194
119
  # via frictionless
195
- pydantic-core==2.33.2
120
+ pydantic-core==2.41.5
196
121
  # via pydantic
197
- pygments==2.19.1
198
- # via
199
- # mkdocs-material
200
- # rich
201
- pymdown-extensions==10.15
202
- # via mkdocs-material
122
+ pygments==2.19.2
123
+ # via rich
203
124
  pyphonetics==0.5.3
204
125
  # via hdx-python-utilities
205
- pytest==8.3.5
206
- # via
207
- # hdx-python-scraper (pyproject.toml)
208
- # pytest-cov
209
- pytest-cov==6.1.1
210
- # via hdx-python-scraper (pyproject.toml)
211
126
  python-dateutil==2.9.0.post0
212
127
  # via
213
128
  # frictionless
214
- # ghp-import
215
129
  # hdx-python-utilities
216
130
  # libhxl
217
- # pandas
218
131
  python-io-wrapper==0.3.1
219
132
  # via libhxl
220
133
  python-slugify==8.0.4
221
134
  # via
222
135
  # ckanapi
223
136
  # frictionless
224
- pytz==2025.2
225
- # via pandas
226
- pyyaml==6.0.2
137
+ pyyaml==6.0.3
227
138
  # via
228
139
  # frictionless
229
- # mkdocs
230
- # mkdocs-get-deps
231
- # pre-commit
232
- # pymdown-extensions
233
- # pyyaml-env-tag
234
140
  # tableschema-to-template
235
- pyyaml-env-tag==1.1
236
- # via mkdocs
237
141
  quantulum3==0.9.2
238
142
  # via hdx-python-api
239
143
  ratelimit==2.2.1
240
144
  # via hdx-python-utilities
241
- referencing==0.36.2
145
+ referencing==0.37.0
242
146
  # via
243
147
  # jsonschema
244
148
  # jsonschema-specifications
245
- regex==2024.11.6
149
+ regex==2026.1.15
246
150
  # via hdx-python-scraper (pyproject.toml)
247
- requests==2.32.3
151
+ requests==2.32.5
248
152
  # via
249
153
  # ckanapi
250
154
  # frictionless
251
155
  # hdx-python-api
252
156
  # libhxl
253
- # mkdocs-material
254
157
  # requests-file
255
158
  # requests-oauthlib
256
- requests-file==2.1.0
159
+ requests-file==3.0.1
257
160
  # via hdx-python-utilities
258
161
  requests-oauthlib==2.0.0
259
162
  # via google-auth-oauthlib
260
163
  rfc3986==2.0.0
261
164
  # via frictionless
262
- rich==14.0.0
165
+ rich==14.2.0
263
166
  # via typer
264
- rpds-py==0.25.0
167
+ rpds-py==0.30.0
265
168
  # via
266
169
  # jsonschema
267
170
  # referencing
268
171
  rsa==4.9.1
269
172
  # via google-auth
270
- ruamel-yaml==0.18.10
173
+ ruamel-yaml==0.19.1
271
174
  # via hdx-python-utilities
272
- setuptools==80.7.1
175
+ setuptools==80.9.0
273
176
  # via ckanapi
274
177
  shellingham==1.5.4
275
178
  # via typer
276
179
  simpleeval==1.0.3
277
180
  # via frictionless
278
- simplejson==3.20.1
181
+ simplejson==3.20.2
279
182
  # via ckanapi
280
183
  six==1.17.0
281
184
  # via
@@ -285,7 +188,7 @@ six==1.17.0
285
188
  # sphinxcontrib-napoleon
286
189
  sphinxcontrib-napoleon==0.7
287
190
  # via defopt
288
- structlog==25.3.0
191
+ structlog==25.5.0
289
192
  # via libhxl
290
193
  tableschema-to-template==0.0.13
291
194
  # via hdx-python-utilities
@@ -295,11 +198,11 @@ tenacity==9.1.2
295
198
  # via hdx-python-country
296
199
  text-unidecode==1.3
297
200
  # via python-slugify
298
- typeguard==4.4.2
201
+ typeguard==4.4.4
299
202
  # via inflect
300
- typer==0.15.4
203
+ typer==0.21.1
301
204
  # via frictionless
302
- typing-extensions==4.13.2
205
+ typing-extensions==4.15.0
303
206
  # via
304
207
  # frictionless
305
208
  # pydantic
@@ -307,33 +210,27 @@ typing-extensions==4.13.2
307
210
  # typeguard
308
211
  # typer
309
212
  # typing-inspection
310
- typing-inspection==0.4.0
213
+ typing-inspection==0.4.2
311
214
  # via pydantic
312
- tzdata==2025.2
313
- # via pandas
314
215
  unidecode==1.4.0
315
216
  # via
316
217
  # libhxl
317
218
  # pyphonetics
318
- urllib3==2.4.0
219
+ urllib3==2.6.3
319
220
  # via
320
221
  # libhxl
321
222
  # requests
322
223
  validators==0.35.0
323
224
  # via frictionless
324
- virtualenv==20.31.2
325
- # via pre-commit
326
- watchdog==6.0.0
327
- # via mkdocs
328
225
  wheel==0.45.1
329
226
  # via libhxl
330
- xlrd==2.0.1
227
+ xlrd==2.0.2
331
228
  # via hdx-python-utilities
332
229
  xlrd3==1.1.0
333
230
  # via libhxl
334
231
  xlsx2csv==0.8.4
335
232
  # via hdx-python-utilities
336
- xlsxwriter==3.2.3
233
+ xlsxwriter==3.2.9
337
234
  # via tableschema-to-template
338
235
  xlwt==1.3.0
339
236
  # via hdx-python-utilities
@@ -0,0 +1,10 @@
1
+ target-version = "py310"
2
+ src = ["src"]
3
+ exclude = ["_version.py"]
4
+
5
+ [lint]
6
+ # List of rules: https://docs.astral.sh/ruff/rules/
7
+ extend-select = [
8
+ "I", # isort
9
+ "UP" # Upgrade Python
10
+ ]
@@ -1,7 +1,14 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
5
12
 
6
13
  TYPE_CHECKING = False
7
14
  if TYPE_CHECKING:
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
9
16
  from typing import Union
10
17
 
11
18
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
12
20
  else:
13
21
  VERSION_TUPLE = object
22
+ COMMIT_ID = object
14
23
 
15
24
  version: str
16
25
  __version__: str
17
26
  __version_tuple__: VERSION_TUPLE
18
27
  version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
19
30
 
20
- __version__ = version = '2.6.5'
21
- __version_tuple__ = version_tuple = (2, 6, 5)
31
+ __version__ = version = '2.7.1'
32
+ __version_tuple__ = version_tuple = (2, 7, 1)
33
+
34
+ __commit_id__ = commit_id = None