hdx-python-scraper 2.6.4__tar.gz → 2.7.0__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.4 → hdx_python_scraper-2.7.0}/.pre-commit-config.yaml +7 -6
  2. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/PKG-INFO +5 -5
  3. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/documentation/index.md +2 -0
  4. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/hatch.toml +2 -2
  5. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/pyproject.toml +4 -4
  6. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/requirements.txt +52 -160
  7. hdx_python_scraper-2.7.0/ruff.toml +10 -0
  8. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/_version.py +16 -3
  9. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/base_scraper.py +49 -49
  10. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/outputs/base.py +21 -21
  11. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/outputs/excelfile.py +9 -10
  12. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/outputs/googlesheets.py +16 -17
  13. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/outputs/json.py +35 -34
  14. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/runner.py +228 -227
  15. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/scrapers/aggregator.py +45 -45
  16. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/scrapers/configurable_scraper.py +39 -38
  17. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/scrapers/resource_downloader.py +2 -2
  18. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/scrapers/rowparser.py +52 -53
  19. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/scrapers/timeseries.py +8 -8
  20. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/__init__.py +14 -14
  21. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/fallbacks.py +11 -18
  22. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/hapi_admins.py +20 -22
  23. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/lookup.py +16 -16
  24. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/reader.py +109 -109
  25. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/region_lookup.py +9 -9
  26. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/sector_configuration.yaml +1 -0
  27. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/sources.py +52 -53
  28. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/writer.py +72 -72
  29. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/conftest.py +4 -3
  30. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/custom/affected_targeted_reached.py +3 -2
  31. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/custom/education_closures.py +3 -3
  32. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/custom/education_enrolment.py +2 -1
  33. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/custom/test_custom.py +6 -5
  34. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/test_aggregation.py +4 -2
  35. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/test_appenddata.py +4 -3
  36. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/test_global.py +3 -2
  37. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/test_multipleurls.py +4 -2
  38. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/test_national.py +6 -4
  39. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/test_regionaltoplevel.py +4 -2
  40. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/test_subnational.py +4 -2
  41. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/test_timeseries.py +2 -1
  42. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/test_runner.py +4 -2
  43. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/utilities/test_hapi_admins.py +1 -0
  44. hdx_python_scraper-2.6.4/ruff.toml +0 -15
  45. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/.coveragerc +0 -0
  46. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/.github/workflows/publish.yaml +0 -0
  47. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/.github/workflows/run-python-tests.yaml +0 -0
  48. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/.gitignore +0 -0
  49. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/CONTRIBUTING.md +0 -0
  50. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/LICENSE +0 -0
  51. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/README.md +0 -0
  52. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/documentation/.readthedocs.yaml +0 -0
  53. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/documentation/mkdocs.yaml +0 -0
  54. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/pytest.ini +0 -0
  55. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/__init__.py +0 -0
  56. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/outputs/__init__.py +0 -0
  57. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/scrapers/__init__.py +0 -0
  58. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/org_type.py +0 -0
  59. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/org_type_configuration.yaml +0 -0
  60. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/src/hdx/scraper/framework/utilities/sector.py +0 -0
  61. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/config/project_configuration.yaml +0 -0
  62. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/access_2pacx-1vrszjzuyvt9i-mkrq2hbxrul2lx2vihkthqm-lae8nyhqty70zqtcufs3pxbhzgat1l2bkoa4-daoap-pub-gid-574237756-single-true-output-csv.csv +0 -0
  63. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/additional-json.json +0 -0
  64. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/altworldindata_data-tagger-match-all-on-tagger-01-header-location-tagger-01-tag.csv +0 -0
  65. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/casualties_2pacx-1vqidedbzz0ehrc0b4fswip14r7mdtu1mpmwakuxupelsah2awcurkgalfduhjvyjul8vzzat3r1b5qg-pub-gid-0-single-true-output-csv.csv +0 -0
  66. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/cbpf-allocations-and-contributions.json +0 -0
  67. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/cbpf2-allocations-and-contributions.json +0 -0
  68. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/cerf-covid-19-allocations.json +0 -0
  69. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/cerf2-covid-19-allocations.json +0 -0
  70. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/cerf2_global_download-full-pfmb-allocations.csv +0 -0
  71. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/cerf_global_download-full-pfmb-allocations.csv +0 -0
  72. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/covax_2pacx-1vtvzu79pptfaa2syevoqfyrrjy63djwitqu0ffbxiqczoun9k9timwmrvfgg1rbsnlmgyugzseiaye2-pub-gid-992438980-single-true-output-csv.csv +0 -0
  73. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/covidtests_data-owid-covid-data.xlsx +0 -0
  74. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/download-global-pcode-lengths.csv +0 -0
  75. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/download-global-pcodes-adm-1-2.csv +0 -0
  76. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/education_closures_broken.xls +0 -0
  77. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/education_closures_school_closures.csv +0 -0
  78. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/education_enrolment_enrollment_data.xlsx +0 -0
  79. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/ethiopia-drought-related-key-figures.json +0 -0
  80. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/ethiopia-pin-targeted-reached-by-location-and-cluster.json +0 -0
  81. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/ethiopia_drought_affected_targeted_reached_by_cluster.csv +0 -0
  82. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/fallbacks.json +0 -0
  83. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/gam_download-unicef-who-wb-global-expanded-databases-severe-wasting.xlsx +0 -0
  84. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/gam_other_download-unicef-who-wb-global-expanded-databases-severe-wasting.xlsx +0 -0
  85. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/global-coordination-groups-beta.json +0 -0
  86. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/global-school-closures-covid19.json +0 -0
  87. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/hno_2017_sahel_nutrition.csv +0 -0
  88. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/hno_2017_sahel_people_in_need.xlsx +0 -0
  89. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/idmc-internally-displaced-persons-idps.json +0 -0
  90. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/idps_download-displacement-data.csv +0 -0
  91. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/idps_override_population-widget-id-264111-geo-id-693-population-group-54074999.json +0 -0
  92. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/idps_somalia_som_unhcr_prmn_displacement_dataset.xlsx +0 -0
  93. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/ipc_somalia_som_food_insecurity_oct_dec2022_projection.csv +0 -0
  94. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/kenya-drought-related-key-figures.json +0 -0
  95. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/kenya-pin-targeted-reached-by-location-and-cluster.json +0 -0
  96. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/kenya_drought_affected_targeted_reached_by_cluster.csv +0 -0
  97. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/key_figures_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-0-single-true-output-csv.csv +0 -0
  98. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/key_figures_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-1275038715-single-true-output-csv.csv +0 -0
  99. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/key_figures_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-2015311116-single-true-output-csv.csv +0 -0
  100. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/key_figures_eth_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-2015311116-single-true-output-csv.csv +0 -0
  101. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/key_figures_ken_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-1275038715-single-true-output-csv.csv +0 -0
  102. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/key_figures_som_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-0-single-true-output-csv.csv +0 -0
  103. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/org_type_organization_types_beta_csv.csv +0 -0
  104. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/organization-types-beta.json +0 -0
  105. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/ourworldindata_data-tagger-match-all-on-tagger-01-header-location-tagger-01-tag.csv +0 -0
  106. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/ourworldindata_other_data-tagger-match-all-on-tagger-01-header-location-tagger-01-tag.csv +0 -0
  107. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/oxcgrt_oxcgrt_csv.csv +0 -0
  108. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/oxford-covid-19-government-response-tracker.json +0 -0
  109. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/population.json +0 -0
  110. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/population_indicator-sp-pop-downloadformat-excel-dataformat-list-totl.xls +0 -0
  111. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/population_other_indicator-sp-pop-downloadformat-excel-dataformat-list-totl.xls +0 -0
  112. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/regions_tbl_regcov_2020_ocha.xlsx +0 -0
  113. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/resource_downloader_xlsx_ukr_border_crossings_090622.xlsx +0 -0
  114. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/sadd-countries-to-include.csv +0 -0
  115. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/sadd_covid-data-dataset-fullvars-extype-csv.csv +0 -0
  116. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/sahel-humanitarian-needs-overview.json +0 -0
  117. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/sahel-humanitarian-needs-overview_prefix.json +0 -0
  118. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/sector_global_coordination_groups_beta_csv.csv +0 -0
  119. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/somalia-acute-food-insecurity-country-data.json +0 -0
  120. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/somalia-drought-related-key-figures.json +0 -0
  121. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/somalia-internally-displaced-persons-idps.json +0 -0
  122. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/somalia-pin-targeted-reached-by-location-and-cluster.json +0 -0
  123. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/somalia_drought_affected_targeted_reached_by_cluster.csv +0 -0
  124. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/timeseries_casualties_2pacx-1vqidedbzz0ehrc0b4fswip14r7mdtu1mpmwakuxupelsah2awcurkgalfduhjvyjul8vzzat3r1b5qg-pub-gid-0-single-true-output-csv.csv +0 -0
  125. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/total-covid-19-tests-performed-by-country.json +0 -0
  126. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/ukraine-border-crossings.json +0 -0
  127. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/ukraine-who-does-what-where-3w.json +0 -0
  128. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/unocha-office-locations.json +0 -0
  129. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/who_national2_who-covid-19-global-data.csv +0 -0
  130. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/who_national3_who-covid-19-global-data.csv +0 -0
  131. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/who_national_who-covid-19-global-data.csv +0 -0
  132. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/whowhatwhere_afg_3w_data.csv +0 -0
  133. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/input/whowhatwhere_notags_3w_data.csv +0 -0
  134. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/test_output.xlsx +0 -0
  135. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/test_scraper_all.json +0 -0
  136. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/test_scraper_other.json +0 -0
  137. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/fixtures/test_scraper_population.json +0 -0
  138. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/__init__.py +0 -0
  139. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/custom/__init__.py +0 -0
  140. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/outputs/__init__.py +0 -0
  141. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/outputs/test_output.py +1 -1
  142. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/__init__.py +0 -0
  143. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/test_resource_downloaders.py +2 -2
  144. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/scrapers/unhcr_myanmar_idps.py +0 -0
  145. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/utilities/__init__.py +0 -0
  146. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/utilities/test_lookup.py +0 -0
  147. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/utilities/test_readers.py +2 -2
  148. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/utilities/test_regionlookup.py +0 -0
  149. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/utilities/test_sources.py +2 -2
  150. {hdx_python_scraper-2.6.4 → hdx_python_scraper-2.7.0}/tests/hdx/scraper/framework/utilities/test_utils.py +0 -0
@@ -1,26 +1,27 @@
1
1
  default_language_version:
2
- python: python3.12
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.4
3
+ Version: 2.7.0
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.3.9
30
- Requires-Dist: hdx-python-country>=3.9.2
31
- Requires-Dist: hdx-python-utilities>=3.8.6
29
+ Requires-Dist: hdx-python-api>=6.6.0
30
+ Requires-Dist: hdx-python-country>=4.0.0
31
+ Requires-Dist: hdx-python-utilities>=4.0.0
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
@@ -24,7 +24,7 @@ version_scheme = "python-simplified-semver"
24
24
  features = ["test"]
25
25
 
26
26
  [[envs.hatch-test.matrix]]
27
- python = ["3.12"]
27
+ python = ["3.13"]
28
28
 
29
29
  [envs.hatch-test.scripts]
30
30
  run = """
@@ -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.3.9",
38
- "hdx-python-country>=3.9.2",
39
- "hdx-python-utilities>=3.8.6",
37
+ "hdx-python-api>=6.6.0",
38
+ "hdx-python-country>=4.0.0",
39
+ "hdx-python-utilities>=4.0.0",
40
40
  "gspread",
41
41
  "regex",
42
42
  ]
@@ -1,113 +1,81 @@
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
- cydifflib==1.2.0
38
- # via hdx-python-utilities
39
- defopt==6.4.0
19
+ click==8.3.1
20
+ # via typer
21
+ defopt==7.0.0
40
22
  # via hdx-python-api
41
- distlib==0.3.9
42
- # via virtualenv
43
- dnspython==2.7.0
23
+ dnspython==2.8.0
44
24
  # via email-validator
45
25
  docopt==0.6.2
46
26
  # via
47
27
  # ckanapi
48
28
  # num2words
49
- docutils==0.21.2
29
+ docutils==0.22.4
50
30
  # via defopt
51
- email-validator==2.2.0
31
+ email-validator==2.3.0
52
32
  # via hdx-python-api
53
33
  et-xmlfile==2.0.0
54
34
  # via openpyxl
55
- filelock==3.18.0
56
- # via virtualenv
57
35
  frictionless==5.18.1
58
36
  # via hdx-python-utilities
59
- ghp-import==2.1.0
60
- # via mkdocs
61
- google-auth==2.40.1
37
+ google-auth==2.47.0
62
38
  # via
63
39
  # google-auth-oauthlib
64
40
  # gspread
65
41
  google-auth-oauthlib==1.2.2
66
42
  # via gspread
67
- gspread==6.2.0
43
+ gspread==6.2.1
68
44
  # via hdx-python-scraper (pyproject.toml)
69
- hdx-python-api==6.3.9
45
+ hdx-python-api==6.6.0
70
46
  # via hdx-python-scraper (pyproject.toml)
71
- hdx-python-country==3.9.2
47
+ hdx-python-country==4.0.0
72
48
  # via
73
49
  # hdx-python-scraper (pyproject.toml)
74
50
  # hdx-python-api
75
- hdx-python-utilities==3.8.6
51
+ hdx-python-utilities==4.0.0
76
52
  # via
77
53
  # hdx-python-scraper (pyproject.toml)
78
54
  # hdx-python-api
79
55
  # hdx-python-country
80
- humanize==4.12.3
56
+ humanize==4.15.0
81
57
  # via frictionless
82
- identify==2.6.10
83
- # via pre-commit
84
- idna==3.10
58
+ idna==3.11
85
59
  # via
86
60
  # email-validator
87
61
  # requests
88
- ijson==3.3.0
62
+ ijson==3.4.0.post0
89
63
  # via hdx-python-utilities
90
64
  inflect==7.5.0
91
65
  # via quantulum3
92
- iniconfig==2.1.0
93
- # via pytest
94
66
  isodate==0.7.2
95
67
  # via frictionless
96
68
  jinja2==3.1.6
97
- # via
98
- # frictionless
99
- # mkapi
100
- # mkdocs
101
- # mkdocs-material
69
+ # via frictionless
102
70
  jsonlines==4.0.0
103
71
  # via hdx-python-utilities
104
72
  jsonpath-ng==1.7.0
105
73
  # via libhxl
106
- jsonschema==4.23.0
74
+ jsonschema==4.26.0
107
75
  # via
108
76
  # frictionless
109
77
  # tableschema-to-template
110
- jsonschema-specifications==2025.4.1
78
+ jsonschema-specifications==2025.9.1
111
79
  # via jsonschema
112
80
  libhxl==5.2.2
113
81
  # via
@@ -115,171 +83,102 @@ libhxl==5.2.2
115
83
  # hdx-python-country
116
84
  loguru==0.7.3
117
85
  # via hdx-python-utilities
118
- makefun==1.15.6
86
+ makefun==1.16.0
119
87
  # via hdx-python-api
120
- markdown==3.8
121
- # via
122
- # mkdocs
123
- # mkdocs-material
124
- # pymdown-extensions
125
- markdown-it-py==3.0.0
88
+ markdown-it-py==4.0.0
126
89
  # via rich
127
- marko==2.1.3
90
+ marko==2.2.2
128
91
  # via frictionless
129
- markupsafe==3.0.2
130
- # via
131
- # jinja2
132
- # mkdocs
92
+ markupsafe==3.0.3
93
+ # via jinja2
133
94
  mdurl==0.1.2
134
95
  # via markdown-it-py
135
- mergedeep==1.3.4
136
- # via
137
- # mkdocs
138
- # mkdocs-get-deps
139
- mkapi==4.3.2
140
- # via hdx-python-scraper (pyproject.toml)
141
- mkdocs==1.6.1
142
- # via
143
- # mkapi
144
- # mkdocs-material
145
- mkdocs-get-deps==0.2.0
146
- # via mkdocs
147
- mkdocs-material==9.6.12
148
- # via mkapi
149
- mkdocs-material-extensions==1.3.1
150
- # via mkdocs-material
151
- more-itertools==10.7.0
96
+ more-itertools==10.8.0
152
97
  # via inflect
153
- nodeenv==1.9.1
154
- # via pre-commit
155
98
  num2words==0.5.14
156
99
  # via quantulum3
157
- numpy==2.2.5
158
- # via pandas
159
- oauthlib==3.2.2
100
+ oauthlib==3.3.1
160
101
  # via requests-oauthlib
161
102
  openpyxl==3.1.5
162
103
  # via hdx-python-utilities
163
- packaging==25.0
164
- # via
165
- # mkdocs
166
- # pytest
167
- paginate==0.5.7
168
- # via mkdocs-material
169
- pandas==2.2.3
170
- # via hdx-python-scraper (pyproject.toml)
171
- pathspec==0.12.1
172
- # via mkdocs
173
- petl==1.7.16
104
+ petl==1.7.17
174
105
  # via frictionless
175
- platformdirs==4.3.7
176
- # via
177
- # mkdocs-get-deps
178
- # virtualenv
179
- pluggy==1.5.0
180
- # via pytest
181
106
  ply==3.11
182
107
  # via
183
108
  # jsonpath-ng
184
109
  # libhxl
185
110
  pockets==0.9.1
186
111
  # via sphinxcontrib-napoleon
187
- pre-commit==4.2.0
188
- # via hdx-python-scraper (pyproject.toml)
189
112
  pyasn1==0.6.1
190
113
  # via
191
114
  # pyasn1-modules
192
115
  # rsa
193
116
  pyasn1-modules==0.4.2
194
117
  # via google-auth
195
- pydantic==2.11.4
118
+ pydantic==2.12.5
196
119
  # via frictionless
197
- pydantic-core==2.33.2
120
+ pydantic-core==2.41.5
198
121
  # via pydantic
199
- pygments==2.19.1
200
- # via
201
- # mkdocs-material
202
- # rich
203
- pymdown-extensions==10.15
204
- # via mkdocs-material
122
+ pygments==2.19.2
123
+ # via rich
205
124
  pyphonetics==0.5.3
206
125
  # via hdx-python-utilities
207
- pytest==8.3.5
208
- # via
209
- # hdx-python-scraper (pyproject.toml)
210
- # pytest-cov
211
- pytest-cov==6.1.1
212
- # via hdx-python-scraper (pyproject.toml)
213
126
  python-dateutil==2.9.0.post0
214
127
  # via
215
128
  # frictionless
216
- # ghp-import
217
129
  # hdx-python-utilities
218
130
  # libhxl
219
- # pandas
220
131
  python-io-wrapper==0.3.1
221
132
  # via libhxl
222
133
  python-slugify==8.0.4
223
134
  # via
224
135
  # ckanapi
225
136
  # frictionless
226
- pytz==2025.2
227
- # via pandas
228
- pyyaml==6.0.2
137
+ pyyaml==6.0.3
229
138
  # via
230
139
  # frictionless
231
- # mkdocs
232
- # mkdocs-get-deps
233
- # pre-commit
234
- # pymdown-extensions
235
- # pyyaml-env-tag
236
140
  # tableschema-to-template
237
- pyyaml-env-tag==0.1
238
- # via mkdocs
239
141
  quantulum3==0.9.2
240
142
  # via hdx-python-api
241
143
  ratelimit==2.2.1
242
144
  # via hdx-python-utilities
243
- referencing==0.36.2
145
+ referencing==0.37.0
244
146
  # via
245
147
  # jsonschema
246
148
  # jsonschema-specifications
247
- regex==2024.11.6
149
+ regex==2025.11.3
248
150
  # via hdx-python-scraper (pyproject.toml)
249
- requests==2.32.3
151
+ requests==2.32.5
250
152
  # via
251
153
  # ckanapi
252
154
  # frictionless
253
155
  # hdx-python-api
254
156
  # libhxl
255
- # mkdocs-material
256
157
  # requests-file
257
158
  # requests-oauthlib
258
- requests-file==2.1.0
159
+ requests-file==3.0.1
259
160
  # via hdx-python-utilities
260
161
  requests-oauthlib==2.0.0
261
162
  # via google-auth-oauthlib
262
163
  rfc3986==2.0.0
263
164
  # via frictionless
264
- rich==14.0.0
165
+ rich==14.2.0
265
166
  # via typer
266
- rpds-py==0.24.0
167
+ rpds-py==0.30.0
267
168
  # via
268
169
  # jsonschema
269
170
  # referencing
270
171
  rsa==4.9.1
271
172
  # via google-auth
272
- ruamel-yaml==0.18.10
173
+ ruamel-yaml==0.19.1
273
174
  # via hdx-python-utilities
274
- ruamel-yaml-clib==0.2.12
275
- # via ruamel-yaml
276
- setuptools==80.3.1
175
+ setuptools==80.9.0
277
176
  # via ckanapi
278
177
  shellingham==1.5.4
279
178
  # via typer
280
179
  simpleeval==1.0.3
281
180
  # via frictionless
282
- simplejson==3.20.1
181
+ simplejson==3.20.2
283
182
  # via ckanapi
284
183
  six==1.17.0
285
184
  # via
@@ -289,7 +188,7 @@ six==1.17.0
289
188
  # sphinxcontrib-napoleon
290
189
  sphinxcontrib-napoleon==0.7
291
190
  # via defopt
292
- structlog==25.3.0
191
+ structlog==25.5.0
293
192
  # via libhxl
294
193
  tableschema-to-template==0.0.13
295
194
  # via hdx-python-utilities
@@ -299,46 +198,39 @@ tenacity==9.1.2
299
198
  # via hdx-python-country
300
199
  text-unidecode==1.3
301
200
  # via python-slugify
302
- typeguard==4.4.2
201
+ typeguard==4.4.4
303
202
  # via inflect
304
- typer==0.15.3
203
+ typer==0.21.1
305
204
  # via frictionless
306
- typing-extensions==4.13.2
205
+ typing-extensions==4.15.0
307
206
  # via
308
207
  # frictionless
309
208
  # pydantic
310
209
  # pydantic-core
311
- # referencing
312
210
  # typeguard
313
211
  # typer
314
212
  # typing-inspection
315
- typing-inspection==0.4.0
213
+ typing-inspection==0.4.2
316
214
  # via pydantic
317
- tzdata==2025.2
318
- # via pandas
319
215
  unidecode==1.4.0
320
216
  # via
321
217
  # libhxl
322
218
  # pyphonetics
323
- urllib3==2.4.0
219
+ urllib3==2.6.3
324
220
  # via
325
221
  # libhxl
326
222
  # requests
327
223
  validators==0.35.0
328
224
  # via frictionless
329
- virtualenv==20.31.1
330
- # via pre-commit
331
- watchdog==6.0.0
332
- # via mkdocs
333
225
  wheel==0.45.1
334
226
  # via libhxl
335
- xlrd==2.0.1
227
+ xlrd==2.0.2
336
228
  # via hdx-python-utilities
337
229
  xlrd3==1.1.0
338
230
  # via libhxl
339
231
  xlsx2csv==0.8.4
340
232
  # via hdx-python-utilities
341
- xlsxwriter==3.2.3
233
+ xlsxwriter==3.2.9
342
234
  # via tableschema-to-template
343
235
  xlwt==1.3.0
344
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.4'
21
- __version_tuple__ = version_tuple = (2, 6, 4)
31
+ __version__ = version = '2.7.0'
32
+ __version_tuple__ = version_tuple = (2, 7, 0)
33
+
34
+ __commit_id__ = commit_id = None