hdx-python-api 6.6.4__tar.gz → 6.6.6__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 (153) hide show
  1. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/.pre-commit-config.yaml +1 -1
  2. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/PKG-INFO +87 -4
  3. hdx_python_api-6.6.6/README.md +100 -0
  4. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/documentation/index.md +2 -0
  5. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/pyproject.toml +3 -4
  6. hdx_python_api-6.6.6/src/hdx/api/_version.py +24 -0
  7. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/data/dataset.py +29 -400
  8. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/data/resource.py +0 -22
  9. hdx_python_api-6.6.6/tests/fixtures/config/hdx_resource_view_static.yaml +3 -0
  10. hdx_python_api-6.6.6/tests/fixtures/update_dataset_resources/expected_resources_to_update.json +85 -0
  11. hdx_python_api-6.6.6/tests/fixtures/update_dataset_resources/unesco_dataset.json +1 -0
  12. hdx_python_api-6.6.6/tests/fixtures/update_dataset_resources/unesco_update_dataset.json +1 -0
  13. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/api/test_ckan.py +2 -2
  14. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_dataset_core.py +6 -6
  15. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_dataset_noncore.py +3 -57
  16. hdx_python_api-6.6.6/tests/hdx/data/test_dataset_resource_generation.py +518 -0
  17. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_resource.py +2 -2
  18. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_resource_view.py +15 -20
  19. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_update_dataset_resources.py +0 -1
  20. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_update_logic.py +3 -12
  21. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_vocabulary.py +0 -6
  22. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/uv.lock +31 -171
  23. hdx_python_api-6.6.4/CONTRIBUTING.md +0 -74
  24. hdx_python_api-6.6.4/README.md +0 -16
  25. hdx_python_api-6.6.4/src/hdx/api/_version.py +0 -34
  26. hdx_python_api-6.6.4/src/hdx/api/utilities/dataset_title_helper.py +0 -254
  27. hdx_python_api-6.6.4/src/hdx/data/hdx_datasource_topline.yaml +0 -30
  28. hdx_python_api-6.6.4/src/hdx/data/indicator_resource_view_template.yaml +0 -4
  29. hdx_python_api-6.6.4/tests/fixtures/config/hdx_resource_view_static.yaml +0 -4
  30. hdx_python_api-6.6.4/tests/fixtures/update_dataset_resources/expected_resources_to_update.json +0 -85
  31. hdx_python_api-6.6.4/tests/fixtures/update_dataset_resources/unesco_dataset.json +0 -1
  32. hdx_python_api-6.6.4/tests/fixtures/update_dataset_resources/unesco_update_dataset.json +0 -1
  33. hdx_python_api-6.6.4/tests/hdx/api/utilities/test_dataset_title_helper.py +0 -301
  34. hdx_python_api-6.6.4/tests/hdx/data/test_dataset_resource_generation.py +0 -1088
  35. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/.github/workflows/publish.yaml +0 -0
  36. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/.github/workflows/run-python-tests.yaml +0 -0
  37. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/.gitignore +0 -0
  38. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/LICENSE +0 -0
  39. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/documentation/.readthedocs.yaml +0 -0
  40. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/documentation/mkdocs.yaml +0 -0
  41. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/__init__.py +0 -0
  42. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/configuration.py +0 -0
  43. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/hdx_base_configuration.yaml +0 -0
  44. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/locations.py +0 -0
  45. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/remotehdx.py +0 -0
  46. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/utilities/__init__.py +0 -0
  47. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/utilities/date_helper.py +0 -0
  48. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/utilities/filestore_helper.py +0 -0
  49. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/utilities/hdx_error_handler.py +0 -0
  50. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/utilities/hdx_state.py +0 -0
  51. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/api/utilities/url_utils.py +0 -0
  52. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/data/__init__.py +0 -0
  53. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/data/hdxobject.py +0 -0
  54. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/data/organization.py +0 -0
  55. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/data/resource_matcher.py +0 -0
  56. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/data/resource_view.py +0 -0
  57. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/data/showcase.py +0 -0
  58. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/data/user.py +0 -0
  59. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/data/vocabulary.py +0 -0
  60. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/facades/__init__.py +0 -0
  61. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/facades/infer_arguments.py +0 -0
  62. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/facades/keyword_arguments.py +0 -0
  63. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/src/hdx/facades/simple.py +0 -0
  64. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/__init__.py +0 -0
  65. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/Accepted_Tags.csv +0 -0
  66. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/CKAN/hdx_dataset_static.yaml +0 -0
  67. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/Tag_Mapping.csv +0 -0
  68. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/Tag_Mapping_ChainRuleError.csv +0 -0
  69. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/empty.yaml +0 -0
  70. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_base_config.json +0 -0
  71. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_base_config.yaml +0 -0
  72. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_config.json +0 -0
  73. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_config.yaml +0 -0
  74. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_dataset_static.json +0 -0
  75. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_dataset_static.yaml +0 -0
  76. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_datasource_topline.json +0 -0
  77. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_datasource_topline.yaml +0 -0
  78. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_email_configuration.json +0 -0
  79. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_email_configuration.yaml +0 -0
  80. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_missing_site_config.json +0 -0
  81. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_organization_static.json +0 -0
  82. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_organization_static.yaml +0 -0
  83. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_resource_static.json +0 -0
  84. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_resource_static.yaml +0 -0
  85. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_resource_view_static.json +0 -0
  86. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_showcase_static.json +0 -0
  87. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_showcase_static.yaml +0 -0
  88. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_user_static.json +0 -0
  89. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_user_static.yaml +0 -0
  90. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_vocabulary_static.json +0 -0
  91. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/hdx_vocabulary_static.yaml +0 -0
  92. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/project_configuration.json +0 -0
  93. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/project_configuration.yaml +0 -0
  94. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/user_agent_config.yaml +0 -0
  95. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/user_agent_config2.yaml +0 -0
  96. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/user_agent_config3.yaml +0 -0
  97. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/config/user_agent_config_wrong.yaml +0 -0
  98. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/dataset_search_results.yaml +0 -0
  99. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/download_gen_resource/conflict_data_alg.csv +0 -0
  100. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/download_gen_resource/min_qc_conflict_data_alg.csv +0 -0
  101. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/download_gen_resource/qc_conflict_data_alg.csv +0 -0
  102. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/download_gen_resource/test_data_no_data.csv +0 -0
  103. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/download_gen_resource/test_data_no_years.csv +0 -0
  104. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/empty.csv +0 -0
  105. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/gen_resource/conflict_data_alg.csv +0 -0
  106. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/gen_resource/min_qc_conflict_data_alg.csv +0 -0
  107. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/gen_resource/qc_conflict_data_alg.csv +0 -0
  108. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/gen_resource/test_data_no_data.csv +0 -0
  109. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/gen_resource/test_data_no_years.csv +0 -0
  110. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/organization_show_results.yaml +0 -0
  111. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/qc_from_rows/qc_conflict_data_alg.csv +0 -0
  112. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/qc_from_rows/qc_conflict_data_alg_one_col.csv +0 -0
  113. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/resource_formats.json +0 -0
  114. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/showcase_all_search_results.yaml +0 -0
  115. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/size_hash/ACLED-All-Africa-File_20170101-to-20170708.xlsx +0 -0
  116. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/state/analysis_dates.txt +0 -0
  117. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/state/last_build_date.txt +0 -0
  118. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/test_data.csv +0 -0
  119. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/test_data.zip +0 -0
  120. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_dataset_resources/dem_data_zwe.csv +0 -0
  121. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_dataset_resources/dem_indicatorlist_zwe.csv +0 -0
  122. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_dataset_resources/opri_data_zwe.csv +0 -0
  123. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_dataset_resources/opri_indicatorlist_zwe.csv +0 -0
  124. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_dataset_resources/opri_metadata_zwe.csv +0 -0
  125. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_dataset_resources/qc_sdg_data_zwe.csv +0 -0
  126. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_dataset_resources/sdg_data_zwe.csv +0 -0
  127. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_dataset_resources/sdg_indicatorlist_zwe.csv +0 -0
  128. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_dataset_resources/sdg_metadata_zwe.csv +0 -0
  129. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_logic/update_logic_resources.yaml +0 -0
  130. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/fixtures/update_logic/update_logic_resources_new.yaml +0 -0
  131. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/__init__.py +0 -0
  132. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/api/__init__.py +0 -0
  133. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/api/test_configuration.py +0 -0
  134. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/api/test_locations.py +0 -0
  135. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/api/utilities/__init__.py +0 -0
  136. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/api/utilities/test_filestore_helper.py +0 -0
  137. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/api/utilities/test_hdx_error_handler.py +0 -0
  138. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/api/utilities/test_hdx_state.py +0 -0
  139. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/api/utilities/test_url_utils.py +0 -0
  140. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/conftest.py +0 -0
  141. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/__init__.py +0 -0
  142. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_dataset_add_hapi_error.py +0 -0
  143. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_organization.py +0 -0
  144. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_showcase.py +0 -0
  145. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/data/test_user.py +0 -0
  146. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/facades/__init__.py +0 -0
  147. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/facades/test_infer_arguments.py +0 -0
  148. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/facades/test_keyword_arguments.py +0 -0
  149. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/tests/hdx/facades/test_simple.py +0 -0
  150. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/workingexample/my_code.py +0 -0
  151. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/workingexample/my_resource.csv +0 -0
  152. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/workingexample/my_resource.xlsx +0 -0
  153. {hdx_python_api-6.6.4 → hdx_python_api-6.6.6}/workingexample/run.py +0 -0
@@ -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.13
15
+ rev: v0.14.14
16
16
  hooks:
17
17
  # Run the linter.
18
18
  - id: ruff-check
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hdx-python-api
3
- Version: 6.6.4
3
+ Version: 6.6.6
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
@@ -28,10 +28,9 @@ Requires-Python: >=3.10
28
28
  Requires-Dist: ckanapi>=4.8
29
29
  Requires-Dist: defopt>=7.0.0
30
30
  Requires-Dist: email-validator
31
- Requires-Dist: hdx-python-country>=4.0.1
32
- Requires-Dist: hdx-python-utilities>=4.0.4
31
+ Requires-Dist: hdx-python-country>=4.1.1
32
+ Requires-Dist: hdx-python-utilities>=4.0.8
33
33
  Requires-Dist: makefun
34
- Requires-Dist: quantulum3
35
34
  Requires-Dist: requests
36
35
  Provides-Extra: docs
37
36
  Requires-Dist: mkapi; extra == 'docs'
@@ -53,3 +52,87 @@ For more information, please read the
53
52
  This library is part of the [Humanitarian Data Exchange](https://data.humdata.org/)
54
53
  (HDX) project. If you have humanitarian related data, please upload your datasets to
55
54
  HDX.
55
+
56
+ # Development
57
+
58
+ ## Environment
59
+
60
+ Development is currently done using Python 3.13. The environment can be created with:
61
+
62
+ ```shell
63
+ uv sync
64
+ ```
65
+
66
+ This creates a .venv folder with the versions specified in the project's uv.lock file.
67
+
68
+ ### Pre-commit
69
+
70
+ pre-commit will be installed when syncing uv. It is run every time you make a git
71
+ commit if you call it like this:
72
+
73
+ ```shell
74
+ pre-commit install
75
+ ```
76
+
77
+ With pre-commit, all code is formatted according to
78
+ [ruff](https://docs.astral.sh/ruff/) guidelines.
79
+
80
+ To check if your changes pass pre-commit without committing, run:
81
+
82
+ ```shell
83
+ pre-commit run --all-files
84
+ ```
85
+
86
+ ## Packages
87
+
88
+ [uv](https://github.com/astral-sh/uv) is used for package management. If
89
+ you’ve introduced a new package to the source code (i.e. anywhere in `src/`),
90
+ please add it to the `project.dependencies` section of `pyproject.toml` with
91
+ any known version constraints.
92
+
93
+ To add packages required only for testing, add them to the
94
+ `[dependency-groups]`.
95
+
96
+ Any changes to the dependencies will be automatically reflected in
97
+ `uv.lock` with `pre-commit`, but you can re-generate the files without committing by
98
+ executing:
99
+
100
+ ```shell
101
+ uv lock --upgrade
102
+ ```
103
+
104
+ ## Project
105
+
106
+ [uv](https://github.com/astral-sh/uv) is used for project management. The project can be
107
+ built using:
108
+
109
+ ```shell
110
+ uv build
111
+ ```
112
+
113
+ Linting and syntax checking can be run with:
114
+
115
+ ```shell
116
+ uv run ruff check
117
+ ```
118
+
119
+ To run the tests and view coverage, execute:
120
+
121
+ ```shell
122
+ uv run pytest
123
+ ```
124
+
125
+ For the `test_ckan.py` test to run successfully, some configuration is required:
126
+
127
+ 1. The environment variable HDX_KEY_TEST needs to contain a valid key from the HDX demo
128
+ server at https://demo.data-humdata-org.ahconu.org/
129
+ 1. Authentication details for Google Sheets need to be obtained and either saved in a
130
+ file named `.gsheet_auth.json` in the home directory (~) or placed in an environment
131
+ variable `GSHEET_AUTH`. The file is preferred for Windows systems since adding such a
132
+ long text string to an environment variable in Windows is challenging.
133
+
134
+ ## Documentation
135
+
136
+ The documentation, including API documentation, is generated using ReadtheDocs and
137
+ MkDocs with Material. As you change the source code, remember to update the
138
+ documentation at `documentation/index.md`.
@@ -0,0 +1,100 @@
1
+ [![Build Status](https://github.com/OCHA-DAP/hdx-python-api/actions/workflows/run-python-tests.yaml/badge.svg)](https://github.com/OCHA-DAP/hdx-python-api/actions/workflows/run-python-tests.yaml)
2
+ [![Coverage Status](https://coveralls.io/repos/github/OCHA-DAP/hdx-python-api/badge.svg?branch=main&ts=1)](https://coveralls.io/github/OCHA-DAP/hdx-python-api?branch=main)
3
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
4
+ [![Downloads](https://img.shields.io/pypi/dm/hdx-python-api.svg)](https://pypistats.org/packages/hdx-python-api)
5
+
6
+ The HDX Python API Library is designed to enable you to easily develop code that
7
+ interacts with the [Humanitarian Data Exchange](https://data.humdata.org/) (HDX)
8
+ platform. The major goal of the library is to make pushing and pulling data from HDX as
9
+ simple as possible for the end user.
10
+
11
+ For more information, please read the
12
+ [documentation](https://hdx-python-api.readthedocs.io/en/latest/).
13
+
14
+ This library is part of the [Humanitarian Data Exchange](https://data.humdata.org/)
15
+ (HDX) project. If you have humanitarian related data, please upload your datasets to
16
+ HDX.
17
+
18
+ # Development
19
+
20
+ ## Environment
21
+
22
+ Development is currently done using Python 3.13. The environment can be created with:
23
+
24
+ ```shell
25
+ uv sync
26
+ ```
27
+
28
+ This creates a .venv folder with the versions specified in the project's uv.lock file.
29
+
30
+ ### Pre-commit
31
+
32
+ pre-commit will be installed when syncing uv. It is run every time you make a git
33
+ commit if you call it like this:
34
+
35
+ ```shell
36
+ pre-commit install
37
+ ```
38
+
39
+ With pre-commit, all code is formatted according to
40
+ [ruff](https://docs.astral.sh/ruff/) guidelines.
41
+
42
+ To check if your changes pass pre-commit without committing, run:
43
+
44
+ ```shell
45
+ pre-commit run --all-files
46
+ ```
47
+
48
+ ## Packages
49
+
50
+ [uv](https://github.com/astral-sh/uv) is used for package management. If
51
+ you’ve introduced a new package to the source code (i.e. anywhere in `src/`),
52
+ please add it to the `project.dependencies` section of `pyproject.toml` with
53
+ any known version constraints.
54
+
55
+ To add packages required only for testing, add them to the
56
+ `[dependency-groups]`.
57
+
58
+ Any changes to the dependencies will be automatically reflected in
59
+ `uv.lock` with `pre-commit`, but you can re-generate the files without committing by
60
+ executing:
61
+
62
+ ```shell
63
+ uv lock --upgrade
64
+ ```
65
+
66
+ ## Project
67
+
68
+ [uv](https://github.com/astral-sh/uv) is used for project management. The project can be
69
+ built using:
70
+
71
+ ```shell
72
+ uv build
73
+ ```
74
+
75
+ Linting and syntax checking can be run with:
76
+
77
+ ```shell
78
+ uv run ruff check
79
+ ```
80
+
81
+ To run the tests and view coverage, execute:
82
+
83
+ ```shell
84
+ uv run pytest
85
+ ```
86
+
87
+ For the `test_ckan.py` test to run successfully, some configuration is required:
88
+
89
+ 1. The environment variable HDX_KEY_TEST needs to contain a valid key from the HDX demo
90
+ server at https://demo.data-humdata-org.ahconu.org/
91
+ 1. Authentication details for Google Sheets need to be obtained and either saved in a
92
+ file named `.gsheet_auth.json` in the home directory (~) or placed in an environment
93
+ variable `GSHEET_AUTH`. The file is preferred for Windows systems since adding such a
94
+ long text string to an environment variable in Windows is challenging.
95
+
96
+ ## Documentation
97
+
98
+ The documentation, including API documentation, is generated using ReadtheDocs and
99
+ MkDocs with Material. As you change the source code, remember to update the
100
+ documentation at `documentation/index.md`.
@@ -54,6 +54,8 @@ The library has detailed API documentation which can be found in the menu at the
54
54
 
55
55
 
56
56
  ## Breaking Changes
57
+ From 6.6.5, removed DatasetTitleHelper class and Dataset method remove_dates_from_title
58
+
57
59
  From 6.6.0, Python 3.10 or later is required
58
60
 
59
61
  From 6.5.7, get_size_and_hash moved to HDX Python Utilities
@@ -39,10 +39,9 @@ dependencies = [
39
39
  "ckanapi>=4.8",
40
40
  "defopt>=7.0.0",
41
41
  "email_validator",
42
- "hdx-python-country>=4.0.1",
43
- "hdx-python-utilities>=4.0.4",
42
+ "hdx-python-country>=4.1.1",
43
+ "hdx-python-utilities>=4.0.8",
44
44
  "makefun",
45
- "quantulum3",
46
45
  "requests",
47
46
  ]
48
47
 
@@ -57,7 +56,7 @@ dev = [
57
56
  "pytest-cov",
58
57
  "pytest-mock",
59
58
  "pre-commit",
60
- "ruff==0.14.13",
59
+ "ruff==0.14.14",
61
60
  ]
62
61
 
63
62
  [project.urls]
@@ -0,0 +1,24 @@
1
+ # file generated by vcs-versioning
2
+ # don't change, don't track in version control
3
+ from __future__ import annotations
4
+
5
+ __all__ = [
6
+ "__version__",
7
+ "__version_tuple__",
8
+ "version",
9
+ "version_tuple",
10
+ "__commit_id__",
11
+ "commit_id",
12
+ ]
13
+
14
+ version: str
15
+ __version__: str
16
+ __version_tuple__: tuple[int | str, ...]
17
+ version_tuple: tuple[int | str, ...]
18
+ commit_id: str | None
19
+ __commit_id__: str | None
20
+
21
+ __version__ = version = '6.6.6'
22
+ __version_tuple__ = version_tuple = (6, 6, 6)
23
+
24
+ __commit_id__ = commit_id = None