oda-data 2.0.4__tar.gz → 2.0.5__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 (70) hide show
  1. {oda_data-2.0.4 → oda_data-2.0.5}/PKG-INFO +1 -1
  2. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/cache.py +8 -0
  3. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/names/create_mapping.py +32 -0
  4. {oda_data-2.0.4 → oda_data-2.0.5}/pyproject.toml +1 -1
  5. {oda_data-2.0.4 → oda_data-2.0.5}/LICENSE +0 -0
  6. {oda_data-2.0.4 → oda_data-2.0.5}/README.md +0 -0
  7. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/.raw_data/README.md +0 -0
  8. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/__init__.py +0 -0
  9. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/api/__init__.py +0 -0
  10. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/api/constants.py +0 -0
  11. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/api/oecd.py +0 -0
  12. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/api/representations.py +0 -0
  13. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/api/sources.py +0 -0
  14. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/clean_data/__init__.py +0 -0
  15. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/clean_data/channels.py +0 -0
  16. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/clean_data/common.py +0 -0
  17. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/clean_data/crs_channel_mapping.csv +0 -0
  18. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/clean_data/dtypes.py +0 -0
  19. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/clean_data/schema.py +0 -0
  20. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/clean_data/validation.py +0 -0
  21. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/config.py +0 -0
  22. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/__init__.py +0 -0
  23. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/common.py +0 -0
  24. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/crs/__init__.py +0 -0
  25. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/crs/common.py +0 -0
  26. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/crs/crs_functions.py +0 -0
  27. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/crs/crs_indicators.json +0 -0
  28. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/crs/oecd.py +0 -0
  29. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/crs/one.py +0 -0
  30. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac1/__init__.py +0 -0
  31. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac1/common.py +0 -0
  32. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac1/dac1_functions.py +0 -0
  33. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac1/dac1_indicators.json +0 -0
  34. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac1/oecd.py +0 -0
  35. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac1/one.py +0 -0
  36. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac2a/__init__.py +0 -0
  37. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac2a/common.py +0 -0
  38. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac2a/dac2a_functions.py +0 -0
  39. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac2a/dac2a_indicators.json +0 -0
  40. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac2a/oecd.py +0 -0
  41. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/dac2a/one.py +0 -0
  42. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/indicator.py +0 -0
  43. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/research/__init__.py +0 -0
  44. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/research/eu.py +0 -0
  45. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/research/policy_markers.py +0 -0
  46. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/indicators/research/sector_imputations.py +0 -0
  47. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/logger.py +0 -0
  48. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/crs_flow_types.json +0 -0
  49. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/crs_modalities.json +0 -0
  50. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/crs_policy_markers.json +0 -0
  51. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/crs_purpose.json +0 -0
  52. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/crs_type_of_finance.json +0 -0
  53. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/dac1_aid_flow_types.json +0 -0
  54. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/dac2a_aid_type.json +0 -0
  55. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/flow_types.json +0 -0
  56. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/indicators.json +0 -0
  57. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/key_columns.json +0 -0
  58. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/provider_groupings.json +0 -0
  59. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/recipient_groupings.json +0 -0
  60. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/settings/v1_indicators_mapping.json +0 -0
  61. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/__init__.py +0 -0
  62. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/compatibility.py +0 -0
  63. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/gni.py +0 -0
  64. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/groupings.py +0 -0
  65. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/names/__init__.py +0 -0
  66. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/names/add.py +0 -0
  67. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/names/crs_names.json +0 -0
  68. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/names/dac1_names.json +0 -0
  69. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/names/dac2a_names.json +0 -0
  70. {oda_data-2.0.4 → oda_data-2.0.5}/oda_data/tools/sector_lists.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: oda_data
3
- Version: 2.0.4
3
+ Version: 2.0.5
4
4
  Summary: A python package to work with Official Development Assistance data from the OECD DAC.
5
5
  License: MIT
6
6
  Author: Jorge Rivera
@@ -7,6 +7,7 @@ from typing import Any, Dict, Optional
7
7
  import pandas as pd
8
8
 
9
9
  from oda_data.logger import logger
10
+ from oda_data.tools.names.create_mapping import snake_to_pascal
10
11
 
11
12
 
12
13
  def generate_param_hash(filters: list[tuple]) -> str:
@@ -48,6 +49,13 @@ class OnDiskCache:
48
49
  ) -> pd.DataFrame | None:
49
50
  """Loads a DataFrame from disk if available and not expired."""
50
51
  path = self.get_file_path(dataset_name, param_hash)
52
+ if dataset_name == "MultiSystemData":
53
+ columns = [snake_to_pascal(col) for col in columns] if columns else columns
54
+ filters = (
55
+ [(snake_to_pascal(col), op, val) for col, op, val in filters]
56
+ if filters
57
+ else None
58
+ )
51
59
  if not path.exists():
52
60
  return None
53
61
  if self._is_expired(path):
@@ -7,6 +7,38 @@ from oda_data.config import ODAPaths
7
7
  from oda_data.indicators.common import update_mapping_file
8
8
 
9
9
 
10
+ def snake_to_pascal(name: str, *, keep_single_letter: bool = False) -> str:
11
+ """
12
+ Convert a snake_case string to PascalCase.
13
+
14
+ Parameters
15
+ ----------
16
+ name : str
17
+ The snake_case identifier to convert.
18
+ keep_single_letter : bool, default False
19
+ If True, preserve the underscore that precedes a 1-letter
20
+ segment (e.g. 'aid_t' → 'Aid_T'). If False, drop it
21
+ ('aid_t' → 'AidT').
22
+
23
+ Returns
24
+ -------
25
+ str
26
+ The PascalCase version.
27
+ """
28
+ parts = name.split("_")
29
+ if not keep_single_letter:
30
+ # Simple path: just capitalise everything and join.
31
+ return "".join(p.capitalize() for p in parts)
32
+
33
+ # Preserve “_” before any single-letter trailing part.
34
+ out: list[str] = []
35
+ for part in parts:
36
+ if len(part) == 1 and out:
37
+ out[-1] = out[-1] + "_" + part.upper()
38
+ else:
39
+ out.append(part.capitalize())
40
+ return "".join(out)
41
+
10
42
  def _code_name(df: pd.DataFrame, code_col: str, name_col: str) -> dict:
11
43
  """Return a dictionary mapping code to name."""
12
44
  return (
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "oda_data"
3
- version = "2.0.4"
3
+ version = "2.0.5"
4
4
  description = "A python package to work with Official Development Assistance data from the OECD DAC."
5
5
  readme = "README.md"
6
6
  authors = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes