hdx-python-scraper 2.3.9__tar.gz → 2.4.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 (130) hide show
  1. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/.config/pre-commit-config.yaml +2 -2
  2. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/PKG-INFO +3 -3
  3. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/documentation/main.md +24 -0
  4. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/pyproject.toml +2 -2
  5. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/requirements.txt +17 -15
  6. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/_version.py +2 -2
  7. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/outputs/googlesheets.py +1 -1
  8. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/utilities/reader.py +9 -5
  9. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/config/project_configuration.yaml +2 -1
  10. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_scrapers_subnational.py +3 -2
  11. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/.config/coveragerc +0 -0
  12. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/.config/pytest.ini +0 -0
  13. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/.config/ruff.toml +0 -0
  14. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/.github/workflows/publish.yaml +0 -0
  15. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/.github/workflows/run-python-tests.yaml +0 -0
  16. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/.gitignore +0 -0
  17. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/CONTRIBUTING.md +0 -0
  18. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/LICENSE +0 -0
  19. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/README.md +0 -0
  20. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/documentation/.readthedocs.yaml +0 -0
  21. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/documentation/pydoc-markdown.yaml +0 -0
  22. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/__init__.py +0 -0
  23. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/base_scraper.py +0 -0
  24. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/configurable/__init__.py +0 -0
  25. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/configurable/aggregator.py +0 -0
  26. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/configurable/resource_downloader.py +0 -0
  27. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/configurable/rowparser.py +0 -0
  28. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/configurable/scraper.py +0 -0
  29. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/configurable/timeseries.py +0 -0
  30. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/outputs/__init__.py +0 -0
  31. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/outputs/base.py +0 -0
  32. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/outputs/excelfile.py +0 -0
  33. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/outputs/json.py +0 -0
  34. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/runner.py +0 -0
  35. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/utilities/__init__.py +0 -0
  36. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/utilities/fallbacks.py +0 -0
  37. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/utilities/region_lookup.py +0 -0
  38. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/utilities/sources.py +0 -0
  39. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/src/hdx/scraper/utilities/writer.py +0 -0
  40. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/access_2pacx-1vrszjzuyvt9i-mkrq2hbxrul2lx2vihkthqm-lae8nyhqty70zqtcufs3pxbhzgat1l2bkoa4-daoap-pub-gid-574237756-single-true-output-csv.csv +0 -0
  41. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/additional-json.json +0 -0
  42. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/altworldindata_data-tagger-match-all-on-tagger-01-header-location-tagger-01-tag.csv +0 -0
  43. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/casualties_2pacx-1vqidedbzz0ehrc0b4fswip14r7mdtu1mpmwakuxupelsah2awcurkgalfduhjvyjul8vzzat3r1b5qg-pub-gid-0-single-true-output-csv.csv +0 -0
  44. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/cbpf-allocations-and-contributions.json +0 -0
  45. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/cbpf2-allocations-and-contributions.json +0 -0
  46. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/cerf-covid-19-allocations.json +0 -0
  47. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/cerf2-covid-19-allocations.json +0 -0
  48. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/cerf2_global_download-full-pfmb-allocations.csv +0 -0
  49. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/cerf_global_download-full-pfmb-allocations.csv +0 -0
  50. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/covax_2pacx-1vtvzu79pptfaa2syevoqfyrrjy63djwitqu0ffbxiqczoun9k9timwmrvfgg1rbsnlmgyugzseiaye2-pub-gid-992438980-single-true-output-csv.csv +0 -0
  51. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/covidtests_data-owid-covid-data.xlsx +0 -0
  52. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/education_closures_broken.xls +0 -0
  53. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/education_closures_school_closures.csv +0 -0
  54. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/education_enrolment_enrollment_data.xlsx +0 -0
  55. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/ethiopia-drought-related-key-figures.json +0 -0
  56. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/ethiopia-pin-targeted-reached-by-location-and-cluster.json +0 -0
  57. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/ethiopia_drought_affected_targeted_reached_by_cluster.csv +0 -0
  58. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/fallbacks.json +0 -0
  59. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/gam_download-unicef-who-wb-global-expanded-databases-severe-wasting.xlsx +0 -0
  60. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/gam_other_download-unicef-who-wb-global-expanded-databases-severe-wasting.xlsx +0 -0
  61. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/global-school-closures-covid19.json +0 -0
  62. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/hno_2017_sahel_nutrition.csv +0 -0
  63. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/hno_2017_sahel_people_in_need.xlsx +0 -0
  64. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/idmc-internally-displaced-persons-idps.json +0 -0
  65. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/idps_download-displacement-data.csv +0 -0
  66. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/idps_override_population-widget-id-264111-geo-id-693-population-group-54074999.json +0 -0
  67. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/idps_somalia_som_unhcr_prmn_displacement_dataset.xlsx +0 -0
  68. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/ipc_somalia_som_food_insecurity_oct_dec2022_projection.csv +0 -0
  69. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/kenya-drought-related-key-figures.json +0 -0
  70. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/kenya-pin-targeted-reached-by-location-and-cluster.json +0 -0
  71. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/kenya_drought_affected_targeted_reached_by_cluster.csv +0 -0
  72. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/key_figures_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-0-single-true-output-csv.csv +0 -0
  73. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/key_figures_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-1275038715-single-true-output-csv.csv +0 -0
  74. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/key_figures_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-2015311116-single-true-output-csv.csv +0 -0
  75. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/key_figures_eth_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-2015311116-single-true-output-csv.csv +0 -0
  76. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/key_figures_ken_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-1275038715-single-true-output-csv.csv +0 -0
  77. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/key_figures_som_2pacx-1vrppqx8jtkkkrckmzfncmmtfecvcpkbp9pdhs1sqtuyacmbsx8tlaxpgblfce-lcehukregguxja-4s-pub-gid-0-single-true-output-csv.csv +0 -0
  78. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/ourworldindata_data-tagger-match-all-on-tagger-01-header-location-tagger-01-tag.csv +0 -0
  79. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/ourworldindata_other_data-tagger-match-all-on-tagger-01-header-location-tagger-01-tag.csv +0 -0
  80. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/oxcgrt_oxcgrt_csv.csv +0 -0
  81. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/oxford-covid-19-government-response-tracker.json +0 -0
  82. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/population.json +0 -0
  83. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/population_indicator-sp-pop-downloadformat-excel-dataformat-list-totl.xls +0 -0
  84. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/population_other_indicator-sp-pop-downloadformat-excel-dataformat-list-totl.xls +0 -0
  85. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/regions_tbl_regcov_2020_ocha.xlsx +0 -0
  86. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/resource_downloader_xlsx_ukr_border_crossings_090622.xlsx +0 -0
  87. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/sadd-countries-to-include.csv +0 -0
  88. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/sadd_covid-data-dataset-fullvars-extype-csv.csv +0 -0
  89. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/sahel-humanitarian-needs-overview.json +0 -0
  90. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/sahel-humanitarian-needs-overview_prefix.json +0 -0
  91. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/somalia-acute-food-insecurity-country-data.json +0 -0
  92. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/somalia-drought-related-key-figures.json +0 -0
  93. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/somalia-internally-displaced-persons-idps.json +0 -0
  94. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/somalia-pin-targeted-reached-by-location-and-cluster.json +0 -0
  95. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/somalia_drought_affected_targeted_reached_by_cluster.csv +0 -0
  96. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/timeseries_casualties_2pacx-1vqidedbzz0ehrc0b4fswip14r7mdtu1mpmwakuxupelsah2awcurkgalfduhjvyjul8vzzat3r1b5qg-pub-gid-0-single-true-output-csv.csv +0 -0
  97. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/total-covid-19-tests-performed-by-country.json +0 -0
  98. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/ukraine-border-crossings.json +0 -0
  99. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/ukraine-who-does-what-where-3w.json +0 -0
  100. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/unocha-office-locations.json +0 -0
  101. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/who_national2_who-covid-19-global-data.csv +0 -0
  102. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/who_national3_who-covid-19-global-data.csv +0 -0
  103. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/who_national_who-covid-19-global-data.csv +0 -0
  104. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/whowhatwhere_afg_3w_data.csv +0 -0
  105. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/input/whowhatwhere_notags_3w_data.csv +0 -0
  106. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/test_output.xlsx +0 -0
  107. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/test_scraper_all.json +0 -0
  108. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/test_scraper_other.json +0 -0
  109. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/fixtures/test_scraper_population.json +0 -0
  110. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/__init__.py +0 -0
  111. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/affected_targeted_reached.py +0 -0
  112. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/conftest.py +0 -0
  113. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/education_closures.py +0 -0
  114. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/education_enrolment.py +0 -0
  115. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_output.py +0 -0
  116. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_readers.py +0 -0
  117. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_regionlookup.py +0 -0
  118. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_runner.py +0 -0
  119. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_scrapers_aggregation.py +0 -0
  120. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_scrapers_appenddata.py +0 -0
  121. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_scrapers_custom.py +0 -0
  122. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_scrapers_global.py +0 -0
  123. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_scrapers_multipleurls.py +0 -0
  124. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_scrapers_national.py +0 -0
  125. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_scrapers_regionaltoplevel.py +0 -0
  126. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_scrapers_resource_downloaders.py +0 -0
  127. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_scrapers_timeseries.py +0 -0
  128. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_sources.py +0 -0
  129. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/test_utils.py +0 -0
  130. {hdx_python_scraper-2.3.9 → hdx_python_scraper-2.4.1}/tests/hdx/scraper/unhcr_myanmar_idps.py +0 -0
@@ -9,7 +9,7 @@ repos:
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.4.8
12
+ rev: v0.5.1
13
13
  hooks:
14
14
  # Run the linter.
15
15
  - id: ruff
@@ -18,7 +18,7 @@ repos:
18
18
  - id: ruff-format
19
19
  args: [--config, .config/ruff.toml]
20
20
  - repo: https://github.com/astral-sh/uv-pre-commit
21
- rev: 0.2.10
21
+ rev: 0.2.13
22
22
  hooks:
23
23
  # Run the pip compile
24
24
  - id: pip-compile
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: hdx-python-scraper
3
- Version: 2.3.9
3
+ Version: 2.4.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>
@@ -26,9 +26,9 @@ Classifier: Programming Language :: Python :: 3.12
26
26
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
27
  Requires-Python: >=3.8
28
28
  Requires-Dist: gspread
29
- Requires-Dist: hdx-python-api>=6.3.1
29
+ Requires-Dist: hdx-python-api>=6.3.2
30
30
  Requires-Dist: hdx-python-country>=3.7.6
31
- Requires-Dist: hdx-python-utilities>=3.7.2
31
+ Requires-Dist: hdx-python-utilities>=3.7.3
32
32
  Requires-Dist: regex
33
33
  Provides-Extra: dev
34
34
  Requires-Dist: pre-commit; extra == 'dev'
@@ -1089,6 +1089,30 @@ same HXL hashtags.
1089
1089
  use_hxl: True
1090
1090
  should_overwrite_sources: True
1091
1091
 
1092
+ The xlsx2csv option below converts the xlsx to csv before processing.
1093
+
1094
+ idps_somalia:
1095
+ dataset: "somalia-internally-displaced-persons-idps"
1096
+ format: "xlsx"
1097
+ xlsx2csv: True
1098
+ filter_cols:
1099
+ - "Reason"
1100
+ - "Year"
1101
+ prefilter: "'drought' in Reason.lower() and int(Year) in (self.today.year - 1, self.today.year)"
1102
+ admin:
1103
+ - value: "SOM"
1104
+ - "Current (Arrival) District"
1105
+ input:
1106
+ - "Number of Individuals"
1107
+ sum:
1108
+ - formula: "int(Number of Individuals)"
1109
+ mustbepopulated: True
1110
+ output:
1111
+ - "IDPs"
1112
+ output_hxl:
1113
+ - "#affected+idps+ind"
1114
+ source_date_format: "%Y-%m-%d"
1115
+
1092
1116
  ## Population Data
1093
1117
 
1094
1118
  Population data is treated as a special class of data. By default, configurable and
@@ -34,9 +34,9 @@ classifiers = [
34
34
  requires-python = ">=3.8"
35
35
 
36
36
  dependencies = [
37
- "hdx-python-api>=6.3.1",
37
+ "hdx-python-api>=6.3.2",
38
38
  "hdx-python-country>=3.7.6",
39
- "hdx-python-utilities>=3.7.2",
39
+ "hdx-python-utilities>=3.7.3",
40
40
  "gspread",
41
41
  "regex",
42
42
  ]
@@ -8,7 +8,7 @@ attrs==23.2.0
8
8
  # jsonlines
9
9
  # jsonschema
10
10
  # referencing
11
- cachetools==5.3.3
11
+ cachetools==5.4.0
12
12
  # via google-auth
13
13
  certifi==2024.7.4
14
14
  # via requests
@@ -26,7 +26,7 @@ click==8.1.7
26
26
  # via typer
27
27
  coverage==7.6.0
28
28
  # via pytest-cov
29
- cryptography==42.0.8
29
+ cryptography==43.0.0
30
30
  # via pyopenssl
31
31
  defopt==6.4.0
32
32
  # via hdx-python-api
@@ -56,13 +56,13 @@ google-auth-oauthlib==1.2.1
56
56
  # via gspread
57
57
  gspread==6.1.2
58
58
  # via hdx-python-scraper (pyproject.toml)
59
- hdx-python-api==6.3.1
59
+ hdx-python-api==6.3.2
60
60
  # via hdx-python-scraper (pyproject.toml)
61
- hdx-python-country==3.7.6
61
+ hdx-python-country==3.7.7
62
62
  # via
63
63
  # hdx-python-scraper (pyproject.toml)
64
64
  # hdx-python-api
65
- hdx-python-utilities==3.7.2
65
+ hdx-python-utilities==3.7.3
66
66
  # via
67
67
  # hdx-python-scraper (pyproject.toml)
68
68
  # hdx-python-api
@@ -101,7 +101,7 @@ libhxl==5.2.1
101
101
  # hdx-python-country
102
102
  loguru==0.7.2
103
103
  # via hdx-python-utilities
104
- makefun==1.15.3
104
+ makefun==1.15.4
105
105
  # via hdx-python-api
106
106
  markdown-it-py==3.0.0
107
107
  # via rich
@@ -119,7 +119,7 @@ nodeenv==1.9.1
119
119
  # via pre-commit
120
120
  num2words==0.5.13
121
121
  # via quantulum3
122
- numpy==2.0.0
122
+ numpy==2.0.1
123
123
  # via pandas
124
124
  oauthlib==3.2.2
125
125
  # via requests-oauthlib
@@ -141,7 +141,7 @@ ply==3.11
141
141
  # libhxl
142
142
  pockets==0.9.1
143
143
  # via sphinxcontrib-napoleon
144
- pre-commit==3.7.1
144
+ pre-commit==3.8.0
145
145
  # via hdx-python-scraper (pyproject.toml)
146
146
  pyasn1==0.6.0
147
147
  # via
@@ -159,13 +159,13 @@ pydantic-core==2.20.1
159
159
  # via pydantic
160
160
  pygments==2.18.0
161
161
  # via rich
162
- pyopenssl==24.1.0
162
+ pyopenssl==24.2.1
163
163
  # via
164
164
  # hdx-python-api
165
165
  # ndg-httpsclient
166
166
  pyphonetics==0.5.3
167
167
  # via hdx-python-country
168
- pytest==8.2.2
168
+ pytest==8.3.2
169
169
  # via
170
170
  # hdx-python-scraper (pyproject.toml)
171
171
  # pytest-cov
@@ -198,7 +198,7 @@ referencing==0.35.1
198
198
  # via
199
199
  # jsonschema
200
200
  # jsonschema-specifications
201
- regex==2024.5.15
201
+ regex==2024.7.24
202
202
  # via hdx-python-scraper (pyproject.toml)
203
203
  requests==2.32.3
204
204
  # via
@@ -216,7 +216,7 @@ rfc3986==2.0.0
216
216
  # via frictionless
217
217
  rich==13.7.1
218
218
  # via typer
219
- rpds-py==0.19.0
219
+ rpds-py==0.19.1
220
220
  # via
221
221
  # jsonschema
222
222
  # referencing
@@ -226,7 +226,7 @@ ruamel-yaml==0.18.6
226
226
  # via hdx-python-utilities
227
227
  ruamel-yaml-clib==0.2.8
228
228
  # via ruamel-yaml
229
- setuptools==70.3.0
229
+ setuptools==72.1.0
230
230
  # via ckanapi
231
231
  shellingham==1.5.4
232
232
  # via typer
@@ -245,7 +245,7 @@ sphinxcontrib-napoleon==0.7
245
245
  # via defopt
246
246
  stringcase==1.2.0
247
247
  # via frictionless
248
- structlog==24.2.0
248
+ structlog==24.4.0
249
249
  # via libhxl
250
250
  tableschema-to-template==0.0.13
251
251
  # via hdx-python-utilities
@@ -274,7 +274,7 @@ urllib3==2.2.2
274
274
  # via
275
275
  # libhxl
276
276
  # requests
277
- validators==0.32.0
277
+ validators==0.33.0
278
278
  # via frictionless
279
279
  virtualenv==20.26.3
280
280
  # via pre-commit
@@ -284,6 +284,8 @@ xlrd==2.0.1
284
284
  # via hdx-python-utilities
285
285
  xlrd3==1.1.0
286
286
  # via libhxl
287
+ xlsx2csv==0.8.3
288
+ # via hdx-python-utilities
287
289
  xlsxwriter==3.2.0
288
290
  # via tableschema-to-template
289
291
  xlwt==1.3.0
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '2.3.9'
16
- __version_tuple__ = version_tuple = (2, 3, 9)
15
+ __version__ = version = '2.4.1'
16
+ __version_tuple__ = version_tuple = (2, 4, 1)
@@ -91,4 +91,4 @@ class GoogleSheets(BaseOutput):
91
91
  df.fillna("NaN", inplace=True)
92
92
  rows.extend(df.values.tolist())
93
93
  values = rows
94
- tab.update("A1", values)
94
+ tab.update(values, "A1")
@@ -206,15 +206,19 @@ class Read(Retrieve):
206
206
  if headers is None:
207
207
  headers = 1
208
208
  datasetinfo["headers"] = 1
209
- kwargs["headers"] = headers
210
- if isinstance(headers, list):
211
- kwargs["fill_merged_cells"] = True
212
209
  format = datasetinfo["format"]
213
210
  kwargs["format"] = format
214
- if not sheet and format in ("xls", "xlsx"):
215
- sheet = 1
211
+ if format in ("xls", "xlsx"):
212
+ if not sheet:
213
+ sheet = 1
214
+ if isinstance(headers, list):
215
+ kwargs["fill_merged_cells"] = True
216
+ elif "fill_merged_cells" not in kwargs:
217
+ kwargs["fill_merged_cells"] = False
218
+ kwargs["xlsx2csv"] = datasetinfo.get("xlsx2csv", False)
216
219
  if sheet:
217
220
  kwargs["sheet"] = sheet
221
+ kwargs["headers"] = headers
218
222
  compression = datasetinfo.get("compression")
219
223
  if compression:
220
224
  kwargs["compression"] = compression
@@ -1049,10 +1049,11 @@ scraper_subnational:
1049
1049
  idps_somalia:
1050
1050
  dataset: "somalia-internally-displaced-persons-idps"
1051
1051
  format: "xlsx"
1052
+ xlsx2csv: True
1052
1053
  filter_cols:
1053
1054
  - "Reason"
1054
1055
  - "Year"
1055
- prefilter: "'drought' in Reason.lower() and Year in (self.today.year - 1, self.today.year)"
1056
+ prefilter: "'drought' in Reason.lower() and int(Year) in (self.today.year - 1, self.today.year)"
1056
1057
  admin:
1057
1058
  - value: "SOM"
1058
1059
  - "Current (Arrival) District"
@@ -353,10 +353,11 @@ class TestScrapersSubnational:
353
353
  def test_fixed_country(self, configuration):
354
354
  BaseScraper.population_lookup = {}
355
355
  today = parse_date("2020-10-01")
356
- adminlevel = AdminLevel(configuration["admin1"])
357
- adminlevel.setup_from_admin_info(configuration["admin1"]["admin_info"])
358
356
  level = "subnational"
359
357
  scraper_configuration = configuration[f"scraper_{level}"]
358
+
359
+ adminlevel = AdminLevel(configuration["admin1"])
360
+ adminlevel.setup_from_admin_info(configuration["admin1"]["admin_info"])
360
361
  runner = Runner(("SOM",), today)
361
362
  runner.add_configurables(
362
363
  scraper_configuration, level, adminlevel=adminlevel