hdx-python-api 6.7.7__tar.gz → 6.7.9__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 (187) hide show
  1. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/.github/workflows/publish.yaml +2 -2
  2. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/.github/workflows/run-python-tests.yaml +8 -6
  3. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/.pre-commit-config.yaml +2 -2
  4. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/PKG-INFO +3 -3
  5. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/explanation/facades.md +1 -1
  6. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/explanation/history.md +1 -1
  7. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/explanation/information.md +1 -1
  8. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/api-key.md +1 -1
  9. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/docker.md +1 -1
  10. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/framework.md +1 -1
  11. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/install.md +1 -1
  12. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/logging.md +1 -1
  13. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/objects.md +1 -1
  14. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-datasets/dataset-resources.md +1 -1
  15. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-datasets/location.md +1 -1
  16. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-datasets/maintainer.md +1 -1
  17. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-datasets/organization.md +1 -1
  18. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-datasets/tags.md +1 -1
  19. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-datasets/time-period.md +1 -1
  20. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-datasets/update-frequency.md +1 -1
  21. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/reference/changelog.md +1 -1
  22. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/tutorials/getting-started.md +1 -1
  23. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/pyproject.toml +3 -3
  24. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/_version.py +2 -2
  25. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/configuration.py +1 -1
  26. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/locations.py +0 -0
  27. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/utilities/date_helper.py +3 -1
  28. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/utilities/filestore_helper.py +0 -0
  29. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/utilities/hdx_error_handler.py +8 -2
  30. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/__init__.py +0 -0
  31. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/dataset.py +124 -99
  32. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/hdxobject.py +3 -3
  33. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/location.py +3 -4
  34. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/organization.py +2 -3
  35. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/resource.py +5 -5
  36. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/resource_matcher.py +7 -10
  37. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/resource_view.py +0 -0
  38. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/showcase.py +5 -5
  39. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/user.py +2 -2
  40. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/vocabulary.py +2 -4
  41. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/facades/__init__.py +0 -0
  42. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/facades/infer_arguments.py +1 -2
  43. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/facades/keyword_arguments.py +0 -0
  44. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/facades/simple.py +0 -0
  45. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/__init__.py +0 -0
  46. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/api/test_ckan.py +5 -3
  47. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/api/test_configuration.py +18 -9
  48. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/api/test_locations.py +0 -0
  49. hdx_python_api-6.7.9/tests/hdx/api/utilities/test_hdx_error_handler.py +76 -0
  50. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/api/utilities/test_hdx_state.py +12 -6
  51. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/conftest.py +0 -0
  52. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_activity.py +2 -1
  53. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_dataset_core.py +7 -6
  54. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_dataset_noncore.py +4 -4
  55. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_dataset_resource_generation.py +4 -4
  56. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_organization.py +4 -2
  57. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_resource.py +26 -22
  58. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_resource_view.py +6 -3
  59. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_showcase.py +6 -3
  60. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_update_dataset_resources.py +13 -7
  61. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_update_logic.py +54 -8
  62. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_user.py +35 -35
  63. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_vocabulary.py +6 -3
  64. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/facades/__init__.py +0 -0
  65. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/facades/test_infer_arguments.py +0 -0
  66. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/facades/test_keyword_arguments.py +0 -0
  67. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/facades/test_simple.py +0 -0
  68. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/uv.lock +415 -367
  69. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/workingexample/my_code.py +0 -0
  70. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/workingexample/run.py +0 -0
  71. hdx_python_api-6.7.7/tests/hdx/api/utilities/test_hdx_error_handler.py +0 -79
  72. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/.gitignore +0 -0
  73. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/CLAUDE.md +0 -0
  74. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/LICENSE +0 -0
  75. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/README.md +0 -0
  76. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/.readthedocs.yaml +0 -0
  77. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/activity-streams.md +0 -0
  78. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/customisation.md +0 -0
  79. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/facades.md +0 -0
  80. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/idmc-example.md +0 -0
  81. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/locations.md +0 -0
  82. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-datasets/resource-generation.md +0 -0
  83. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-datasets/visualization.md +0 -0
  84. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-resources/data-dictionary.md +0 -0
  85. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-resources/datastore.md +0 -0
  86. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/operate-resources/resource-operations.md +0 -0
  87. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/organizations.md +0 -0
  88. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/pipeline-state.md +0 -0
  89. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/showcases.md +0 -0
  90. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/statistics.md +0 -0
  91. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/users.md +0 -0
  92. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/vocabularies.md +0 -0
  93. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/how-to/working-examples.md +0 -0
  94. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/index.md +0 -0
  95. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/documentation/mkdocs.yaml +0 -0
  96. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/__init__.py +0 -0
  97. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/hdx_base_configuration.yaml +0 -0
  98. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/remotehdx.py +0 -0
  99. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/utilities/__init__.py +0 -0
  100. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/utilities/hdx_state.py +0 -0
  101. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/utilities/hdx_stats.py +0 -0
  102. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/api/utilities/url_utils.py +0 -0
  103. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/src/hdx/data/activity.py +0 -0
  104. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/__init__.py +0 -0
  105. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/Accepted_Tags.csv +0 -0
  106. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/CKAN/hdx_dataset_static.yaml +0 -0
  107. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/Tag_Mapping.csv +0 -0
  108. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/Tag_Mapping_ChainRuleError.csv +0 -0
  109. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/empty.yaml +0 -0
  110. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_base_config.json +0 -0
  111. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_base_config.yaml +0 -0
  112. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_config.json +0 -0
  113. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_config.yaml +0 -0
  114. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_dataset_static.json +0 -0
  115. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_dataset_static.yaml +0 -0
  116. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_datasource_topline.json +0 -0
  117. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_datasource_topline.yaml +0 -0
  118. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_email_configuration.json +0 -0
  119. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_email_configuration.yaml +0 -0
  120. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_missing_site_config.json +0 -0
  121. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_organization_static.json +0 -0
  122. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_organization_static.yaml +0 -0
  123. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_resource_static.json +0 -0
  124. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_resource_static.yaml +0 -0
  125. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_resource_view_static.json +0 -0
  126. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_resource_view_static.yaml +0 -0
  127. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_showcase_static.json +0 -0
  128. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_showcase_static.yaml +0 -0
  129. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_user_static.json +0 -0
  130. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_user_static.yaml +0 -0
  131. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_vocabulary_static.json +0 -0
  132. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/hdx_vocabulary_static.yaml +0 -0
  133. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/project_configuration.json +0 -0
  134. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/project_configuration.yaml +0 -0
  135. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/user_agent_config.yaml +0 -0
  136. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/user_agent_config2.yaml +0 -0
  137. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/user_agent_config3.yaml +0 -0
  138. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/config/user_agent_config_wrong.yaml +0 -0
  139. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/dataset_search_results.yaml +0 -0
  140. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/download_gen_resource/conflict_data_alg.csv +0 -0
  141. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/download_gen_resource/min_qc_conflict_data_alg.csv +0 -0
  142. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/download_gen_resource/qc_conflict_data_alg.csv +0 -0
  143. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/download_gen_resource/test_data_no_data.csv +0 -0
  144. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/download_gen_resource/test_data_no_years.csv +0 -0
  145. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/empty.csv +0 -0
  146. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/gen_resource/conflict_data_alg.csv +0 -0
  147. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/gen_resource/min_qc_conflict_data_alg.csv +0 -0
  148. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/gen_resource/qc_conflict_data_alg.csv +0 -0
  149. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/gen_resource/test_data_no_data.csv +0 -0
  150. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/gen_resource/test_data_no_years.csv +0 -0
  151. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/location/location_list_all_fields.yaml +0 -0
  152. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/location/location_show_results.yaml +0 -0
  153. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/organization/organization_list_all_fields.yaml +0 -0
  154. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/organization/organization_show_results.yaml +0 -0
  155. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/qc_from_rows/qc_conflict_data_alg.csv +0 -0
  156. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/qc_from_rows/qc_conflict_data_alg_one_col.csv +0 -0
  157. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/resource_formats.json +0 -0
  158. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/showcase_all_search_results.yaml +0 -0
  159. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/size_hash/ACLED-All-Africa-File_20170101-to-20170708.xlsx +0 -0
  160. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/state/analysis_dates.txt +0 -0
  161. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/state/last_build_date.txt +0 -0
  162. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/test_data.csv +0 -0
  163. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/test_data.zip +0 -0
  164. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/dem_data_zwe.csv +0 -0
  165. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/dem_indicatorlist_zwe.csv +0 -0
  166. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/expected_resources_to_update.json +0 -0
  167. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/opri_data_zwe.csv +0 -0
  168. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/opri_indicatorlist_zwe.csv +0 -0
  169. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/opri_metadata_zwe.csv +0 -0
  170. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/qc_sdg_data_zwe.csv +0 -0
  171. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/sdg_data_zwe.csv +0 -0
  172. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/sdg_indicatorlist_zwe.csv +0 -0
  173. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/sdg_metadata_zwe.csv +0 -0
  174. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/unesco_dataset.json +0 -0
  175. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_dataset_resources/unesco_update_dataset.json +0 -0
  176. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_logic/update_logic_resources.yaml +0 -0
  177. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/fixtures/update_logic/update_logic_resources_new.yaml +0 -0
  178. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/api/__init__.py +0 -0
  179. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/api/utilities/__init__.py +0 -0
  180. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/api/utilities/test_filestore_helper.py +0 -0
  181. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/api/utilities/test_hdx_stats.py +0 -0
  182. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/api/utilities/test_url_utils.py +0 -0
  183. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/__init__.py +0 -0
  184. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_dataset_add_hapi_error.py +0 -0
  185. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/tests/hdx/data/test_location.py +0 -0
  186. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/workingexample/my_resource.csv +0 -0
  187. {hdx_python_api-6.7.7 → hdx_python_api-6.7.9}/workingexample/my_resource.xlsx +0 -0
@@ -17,7 +17,7 @@ jobs:
17
17
  contents: read
18
18
 
19
19
  steps:
20
- - uses: actions/checkout@v6
20
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
21
21
 
22
22
  - name: Get history and tags for versioning to work
23
23
  run: |
@@ -25,7 +25,7 @@ jobs:
25
25
  git fetch --depth=1 origin +refs/tags/*:refs/tags/*
26
26
 
27
27
  - name: Install uv
28
- uses: astral-sh/setup-uv@v7
28
+ uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
29
29
 
30
30
  - name: Build with uv
31
31
  run: uv build
@@ -7,6 +7,9 @@ on:
7
7
  pull_request:
8
8
  branches-ignore: [gh-pages]
9
9
 
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
12
+
10
13
  jobs:
11
14
  build:
12
15
  runs-on: ubuntu-latest
@@ -16,10 +19,10 @@ jobs:
16
19
  pull-requests: write
17
20
 
18
21
  steps:
19
- - uses: actions/checkout@v6
22
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
20
23
 
21
24
  - name: Install uv
22
- uses: astral-sh/setup-uv@v7
25
+ uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
23
26
  with:
24
27
  enable-cache: true
25
28
  python-version: "3.13"
@@ -39,14 +42,13 @@ jobs:
39
42
  run: uv run pytest
40
43
 
41
44
  - name: Publish Unit Test Results
42
- uses: EnricoMi/publish-unit-test-result-action@v2
43
- if: always()
45
+ uses: EnricoMi/publish-unit-test-result-action@7622c5bf3d112a72ab4fa3951c2aa5723d8ab92d # v2.25.0
46
+ if: (!cancelled())
44
47
  with:
45
48
  files: test-results.xml
46
49
 
47
50
  - name: Publish in Coveralls
48
- uses: coverallsapp/github-action@v2
49
- if: always()
51
+ uses: coverallsapp/github-action@8d6379e14d29928660c4ba802d8e85393440b329 # v2.3.8
50
52
  with:
51
53
  flag-name: tests
52
54
  format: lcov
@@ -12,7 +12,7 @@ repos:
12
12
  - id: check-ast
13
13
 
14
14
  - repo: https://github.com/astral-sh/ruff-pre-commit
15
- rev: v0.14.14
15
+ rev: v0.17.3
16
16
  hooks:
17
17
  # Run the linter.
18
18
  - id: ruff-check
@@ -21,7 +21,7 @@ repos:
21
21
  - id: ruff-format
22
22
 
23
23
  - repo: https://github.com/astral-sh/uv-pre-commit
24
- rev: 0.9.25
24
+ rev: 0.13.6
25
25
  hooks:
26
26
  # Ensure the lockfile is up-to-date with pyproject.toml
27
27
  - id: uv-lock
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: hdx-python-api
3
- Version: 6.7.7
3
+ Version: 6.7.9
4
4
  Summary: HDX Python API for interacting with the Humanitarian Data Exchange
5
5
  Project-URL: Homepage, https://github.com/OCHA-DAP/hdx-python-api
6
6
  Author: Michael Rans
@@ -27,8 +27,8 @@ Requires-Python: >=3.11
27
27
  Requires-Dist: ckanapi>=4.11
28
28
  Requires-Dist: defopt>=7.0.0
29
29
  Requires-Dist: email-validator
30
- Requires-Dist: hdx-python-country>=4.2.6
31
- Requires-Dist: hdx-python-utilities>=4.2.5
30
+ Requires-Dist: hdx-python-country>=4.3.1
31
+ Requires-Dist: hdx-python-utilities>=4.2.7
32
32
  Requires-Dist: makefun
33
33
  Requires-Dist: requests
34
34
  Provides-Extra: docs
@@ -11,4 +11,4 @@ project configuration is used for any configuration specific to your project.
11
11
 
12
12
  The default logging configuration reads a configuration file internal to the library
13
13
  that sets up an coloured console handler outputting at INFO level and a file handler
14
- writing to errors.log at ERROR level.
14
+ writing to errors.log at ERROR level.
@@ -15,4 +15,4 @@ resolve issues as quickly as possible. Static metadata can be held in human read
15
15
  files so if it needs to be modified, it is straightforward.
16
16
 
17
17
  The HDX Python library has expanded over time as needs have arisen and is used for a
18
- range of tasks involving interaction with the HDX platform.
18
+ range of tasks involving interaction with the HDX platform.
@@ -8,4 +8,4 @@ This library is part of the [Humanitarian Data Exchange](https://data.humdata.or
8
8
  HDX.
9
9
 
10
10
  The code for the library is [here](https://github.com/OCHA-DAP/hdx-python-api).
11
- The library has detailed API documentation which can be found in the menu at the top.
11
+ The library has detailed API documentation which can be found in the menu at the top.
@@ -21,4 +21,4 @@ the drop down menu
21
21
  **.hdx_configuration.yaml** in the current user's home
22
22
  directory. Then put in the YAML file:
23
23
 
24
- hdx_key: "HDX API KEY"
24
+ hdx_key: "HDX API KEY"
@@ -3,4 +3,4 @@
3
3
  The library is also available set up and ready to go in a Docker image:
4
4
 
5
5
  docker pull public.ecr.aws/unocha/hdx-scraper-baseimage:stable
6
- docker run -i -t public.ecr.aws/unocha/hdx-scraper-baseimage:stable python3
6
+ docker run -i -t public.ecr.aws/unocha/hdx-scraper-baseimage:stable python3
@@ -54,4 +54,4 @@ Create a file **my_code.py** and copy into it the code below:
54
54
  """
55
55
  logger.debug("Generating dataset!")
56
56
 
57
- You can then fill out the function **generate_dataset** as required.
57
+ You can then fill out the function **generate_dataset** as required.
@@ -15,4 +15,4 @@ package that are missing eg. for Ubuntu: python-dev, libffi-dev and libssl-dev.
15
15
  If you get import or other errors, then please either recreate your virtualenv if you
16
16
  are using one or uninstall hdx-python-api, hdx-python-country and hdx-python-utilities
17
17
  using **pip uninstall**, then install hdx-python-api (which will pull in the other
18
- dependencies).
18
+ dependencies).
@@ -23,4 +23,4 @@ Then use the logger like this:
23
23
  logger.info("INFORMATION message")
24
24
  logger.warning("WARNING message")
25
25
  logger.error("ERROR message")
26
- logger.critical("CRITICAL error message")
26
+ logger.critical("CRITICAL error message")
@@ -99,4 +99,4 @@ You can delete HDX objects using **delete_from_hdx** and update an object that
99
99
  already exists in HDX with the method **update_in_hdx**. These take various
100
100
  boolean parameters that all have defaults and are documented in the API docs.
101
101
  They do not return anything and they throw exceptions for failures like the
102
- object to update not existing.
102
+ object to update not existing.
@@ -106,4 +106,4 @@ dataset is updated from the result:
106
106
 
107
107
  dataset.set_qa_completed(True)
108
108
  dataset.qa_revise_resources("pii", "false")
109
- dataset.reset_fs_check()
109
+ dataset.reset_fs_check()
@@ -38,4 +38,4 @@ If you want to add any other kind of location (which must be in this
38
38
  [list of valid locations](https://data.humdata.org/api/action/group_list?all_fields=true)),
39
39
  you do as shown below.
40
40
 
41
- dataset.add_other_location("LOCATION")
41
+ dataset.add_other_location("LOCATION")
@@ -10,4 +10,4 @@ If you want to set the maintainer, you do it like this:
10
10
 
11
11
  dataset.set_maintainer(USER)
12
12
 
13
- USER is either a string id, dictionary or a User object.
13
+ USER is either a string id, dictionary or a User object.
@@ -11,4 +11,4 @@ If you want to set the organization, you do it like this:
11
11
  dataset.set_organization(ORGANIZATION)
12
12
 
13
13
  ORGANIZATION is either a string id, dictionary or an Organization
14
- object.
14
+ object.
@@ -21,4 +21,4 @@ If you want to add a list of tags, you do it as follows:
21
21
 
22
22
  To obtain the predefined set of approved tags:
23
23
 
24
- approved_tags = Vocabulary.approved_tags()
24
+ approved_tags = Vocabulary.approved_tags()
@@ -28,4 +28,4 @@ The method below allows you to set the time period using a year range. The start
28
28
  end year can be supplied as integers or strings. If no end year is supplied then the
29
29
  range will be from the beginning of the start year to the end of that year.
30
30
 
31
- dataset.set_time_period_year_range(START YEAR, END YEAR)
31
+ dataset.set_time_period_year_range(START YEAR, END YEAR)
@@ -38,4 +38,4 @@ A list of valid update frequencies can be found using:
38
38
  Transforming backwards and forwards between representations can be achieved with this
39
39
  function:
40
40
 
41
- update_frequency = Dataset.transform_update_frequency("UPDATE_FREQUENCY")
41
+ update_frequency = Dataset.transform_update_frequency("UPDATE_FREQUENCY")
@@ -70,4 +70,4 @@ List[str]] (Tuple containing list of added tags and list of deleted tags and tag
70
70
  added).
71
71
 
72
72
  From 3.7.1, the list of tags must be from a set of approved tags (see
73
- [Set Tags](../how-to/operate-datasets/tags.md)).
73
+ [Set Tags](../how-to/operate-datasets/tags.md)).
@@ -130,4 +130,4 @@ virtualenv if not installed:
130
130
 
131
131
  On other OSs:
132
132
 
133
- rm -rf test
133
+ rm -rf test
@@ -38,8 +38,8 @@ dependencies = [
38
38
  "ckanapi>=4.11",
39
39
  "defopt>=7.0.0",
40
40
  "email_validator",
41
- "hdx-python-country>=4.2.6",
42
- "hdx-python-utilities>=4.2.5",
41
+ "hdx-python-country>=4.3.1",
42
+ "hdx-python-utilities>=4.2.7",
43
43
  "makefun",
44
44
  "requests",
45
45
  ]
@@ -55,7 +55,7 @@ dev = [
55
55
  "pytest-cov",
56
56
  "pytest-mock",
57
57
  "pre-commit",
58
- "ruff==0.14.14",
58
+ "ruff==0.17.3",
59
59
  ]
60
60
 
61
61
  [project.urls]
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '6.7.7'
22
- __version_tuple__ = version_tuple = (6, 7, 7)
21
+ __version__ = version = '6.7.9'
22
+ __version_tuple__ = version_tuple = (6, 7, 9)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -200,7 +200,7 @@ class Configuration(UserDict):
200
200
  if hdx_read_only is None:
201
201
  hdx_read_only = False
202
202
  self.hdx_read_only = hdx_read_only
203
- logger.info(f"Read only access to HDX: {str(self.hdx_read_only)}")
203
+ logger.info(f"Read only access to HDX: {self.hdx_read_only!s}")
204
204
 
205
205
  if self.hdx_site == "hdx_custom_site":
206
206
  hdx_key = None
@@ -63,7 +63,7 @@ class DateHelper:
63
63
  def get_time_period_info(
64
64
  hdx_time_period: str,
65
65
  date_format: str | None = None,
66
- today: datetime = now_utc(),
66
+ today: datetime | None = None,
67
67
  ) -> dict:
68
68
  """Get time period as datetimes and strings in specified format.
69
69
  If no format is supplied, the ISO 8601 format is used. Returns a
@@ -80,6 +80,8 @@ class DateHelper:
80
80
  Returns:
81
81
  Dictionary of date information
82
82
  """
83
+ if today is None:
84
+ today = now_utc()
83
85
  result = {}
84
86
  if hdx_time_period:
85
87
  if hdx_time_period[0] == "[" and hdx_time_period[-1] == "]":
@@ -1,6 +1,7 @@
1
1
  import logging
2
2
  from collections.abc import Sequence
3
3
  from os import getenv
4
+ from types import TracebackType
4
5
  from typing import Any
5
6
 
6
7
  from hdx.utilities.dictandlist import dict_of_sets_add
@@ -32,7 +33,7 @@ class HDXErrorHandler(ErrorHandler):
32
33
  ):
33
34
  super().__init__(should_exit_on_error)
34
35
  if write_to_hdx is None:
35
- write_to_hdx = getenv("ERR_TO_HDX", True)
36
+ write_to_hdx = getenv("ERR_TO_HDX", "True")
36
37
  if write_to_hdx in (False, 0, "false", "False", "FALSE", "N", "n", ""):
37
38
  self._write_to_hdx = False
38
39
  logger.info("Errors won't be written to HDX")
@@ -210,7 +211,12 @@ class HDXErrorHandler(ErrorHandler):
210
211
  if self._write_to_hdx:
211
212
  self.write_errors_to_hdx()
212
213
 
213
- def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> None:
214
+ def __exit__(
215
+ self,
216
+ exc_type: type[BaseException] | None,
217
+ exc_value: BaseException | None,
218
+ traceback: TracebackType | None,
219
+ ) -> None:
214
220
  if self._write_to_hdx:
215
221
  self.write_errors_to_hdx()
216
222
  super().__exit__(exc_type, exc_value, traceback)