owid-datautils 0.6.1__tar.gz → 0.6.3__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 (57) hide show
  1. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.readthedocs.yaml +1 -1
  2. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/PKG-INFO +12 -4
  3. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/common.py +12 -17
  4. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/dataframes.py +383 -245
  5. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/decorators.py +11 -7
  6. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/format/numbers.py +56 -81
  7. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/google/api.py +35 -49
  8. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/google/config.py +17 -29
  9. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/google/sheets.py +29 -46
  10. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/io/archive.py +12 -17
  11. owid_datautils-0.6.3/owid/datautils/io/df.py +222 -0
  12. owid_datautils-0.6.3/owid/datautils/io/json.py +92 -0
  13. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/ui.py +1 -1
  14. owid_datautils-0.6.3/owid/datautils/web.py +144 -0
  15. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/pyproject.toml +32 -12
  16. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/format/test_numbers.py +4 -4
  17. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/google/test_config.py +4 -4
  18. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/google/test_sheets.py +6 -6
  19. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/io/test_archive.py +5 -6
  20. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/io/test_df.py +2 -2
  21. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/mocks.py +2 -2
  22. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/test_dataframes.py +2 -2
  23. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/test_decorators.py +1 -1
  24. owid_datautils-0.6.3/uv.lock +2872 -0
  25. owid_datautils-0.6.1/owid/datautils/io/df.py +0 -163
  26. owid_datautils-0.6.1/owid/datautils/io/json.py +0 -78
  27. owid_datautils-0.6.1/owid/datautils/web.py +0 -106
  28. owid_datautils-0.6.1/uv.lock +0 -2248
  29. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.bumpversion.cfg +0 -0
  30. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.codecov.yml +0 -0
  31. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.github/workflows/python-package.yml +0 -0
  32. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.gitignore +0 -0
  33. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.pre-commit-config.yaml +0 -0
  34. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/LICENSE +0 -0
  35. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/Makefile +0 -0
  36. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/README.md +0 -0
  37. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/Makefile +0 -0
  38. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/_static/favicon.ico +0 -0
  39. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/_static/owid.png +0 -0
  40. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/apidoc-templates/module.rst_t +0 -0
  41. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/apidoc-templates/package.rst_t +0 -0
  42. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/apidoc-templates/toc.rst_t +0 -0
  43. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/conf.py +0 -0
  44. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/index.rst +0 -0
  45. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/make.bat +0 -0
  46. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/__init__.py +0 -0
  47. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/checks.py +0 -0
  48. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/format/__init__.py +0 -0
  49. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/google/__init__.py +0 -0
  50. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/io/__init__.py +0 -0
  51. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/__init__.py +0 -0
  52. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/format/__init__.py +0 -0
  53. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/google/__init__.py +0 -0
  54. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/google/test_api.py +0 -0
  55. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/io/test_json.py +0 -0
  56. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/test_ui.py +0 -0
  57. {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/test_web.py +0 -0
@@ -6,7 +6,7 @@ version: 2
6
6
 
7
7
  # Set the version of Python and other tools you might need
8
8
  build:
9
- os: ubuntu-20.04
9
+ os: ubuntu-24.04
10
10
  tools: {python: "3.8"}
11
11
  jobs:
12
12
  pre_create_environment:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: owid-datautils
3
- Version: 0.6.1
3
+ Version: 0.6.3
4
4
  Summary: Data utils library by the Data Team at Our World in Data
5
5
  Author-email: Our World in Data <tech@ourworldindata.org>
6
6
  License-Expression: MIT
@@ -8,13 +8,21 @@ License-File: LICENSE
8
8
  Keywords: data cleaning,data processing,data utils,our world in data
9
9
  Requires-Python: <4.0,>=3.10
10
10
  Requires-Dist: boto3>=1.38.23
11
+ Requires-Dist: brotli>=1.2.0
11
12
  Requires-Dist: click>=8.1.7
12
13
  Requires-Dist: colorama>=0.4.4
13
- Requires-Dist: gdown>=4.5.2
14
+ Requires-Dist: cryptography>=46.0.3
15
+ Requires-Dist: gdown>=5.2.2
14
16
  Requires-Dist: gsheets>=0.6.1
15
- Requires-Dist: pandas>=2.2.3
17
+ Requires-Dist: jinja2>=3.1.6
18
+ Requires-Dist: pandas<3,>=2.2.3
19
+ Requires-Dist: protobuf>=6.33.4
16
20
  Requires-Dist: py7zr>=0.22.0
17
21
  Requires-Dist: pyarrow>=18.0.0
22
+ Requires-Dist: pyasn1>=0.6.3
18
23
  Requires-Dist: pydrive2>=1.15.0
24
+ Requires-Dist: pyopenssl>=26.0.0
25
+ Requires-Dist: requests>=2.32.5
19
26
  Requires-Dist: structlog>=21.5.0
20
- Requires-Dist: urllib3<2
27
+ Requires-Dist: tornado>=6.5.5
28
+ Requires-Dist: urllib3<3
@@ -1,20 +1,20 @@
1
1
  """Common objects shared by other modules."""
2
2
 
3
3
  import warnings
4
- from typing import Any, List, Set, Union, cast
4
+ from typing import Any, cast
5
5
 
6
6
 
7
7
  class ExceptionFromDocstring(Exception):
8
8
  """Exception that returns its own docstring, if no message is explicitly given."""
9
9
 
10
- def __init__(self, exception_message: Union[str, None] = None, *args: Any):
10
+ def __init__(self, exception_message: str | None = None, *args: Any):
11
11
  super().__init__(exception_message or self.__doc__, *args)
12
12
 
13
13
 
14
14
  class ExceptionFromDocstringWithKwargs(Exception):
15
15
  """Exception that returns its own docstring, if no message is explicitly given."""
16
16
 
17
- def __init__(self, exception_message: Union[str, None] = None, *args: Any, **kwargs: Any):
17
+ def __init__(self, exception_message: str | None = None, *args: Any, **kwargs: Any):
18
18
  text = cast(str, exception_message or self.__doc__)
19
19
  if kwargs:
20
20
  additional_text = ", ".join([f"{key}: {value}" for key, value in kwargs.items()])
@@ -23,22 +23,17 @@ class ExceptionFromDocstringWithKwargs(Exception):
23
23
  super().__init__(text, *args)
24
24
 
25
25
 
26
- def warn_on_list_of_entities(
27
- list_of_entities: Union[List[Any], Set[Any]], warning_message: str, show_list: bool
28
- ) -> None:
26
+ def warn_on_list_of_entities(list_of_entities: list[Any] | set[Any], warning_message: str, show_list: bool) -> None:
29
27
  """Raise a warning with a custom message, and optionally print a list of affected elements.
30
28
 
31
- Parameters
32
- ----------
33
- list_of_entities : list or set
34
- Elements to optionally print one by one (only relevant if show_list is True).
35
- warning_message : str
36
- Warning message.
37
- show_list : bool
38
- True to print a list of affected entities.
29
+ Args:
30
+ list_of_entities: Elements to optionally print one by one (only relevant if show_list is True).
31
+ warning_message: Warning message.
32
+ show_list: True to print a list of affected entities.
39
33
 
40
34
  """
41
- warnings.warn(warning_message)
42
35
  if show_list:
43
- print(warning_message)
44
- print("\n".join(["* " + str(entity) for entity in list_of_entities]))
36
+ entity_list = "\n".join(["* " + str(entity) for entity in list_of_entities])
37
+ warnings.warn(f"{warning_message}\n{entity_list}")
38
+ else:
39
+ warnings.warn(warning_message)