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.
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.readthedocs.yaml +1 -1
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/PKG-INFO +12 -4
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/common.py +12 -17
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/dataframes.py +383 -245
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/decorators.py +11 -7
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/format/numbers.py +56 -81
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/google/api.py +35 -49
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/google/config.py +17 -29
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/google/sheets.py +29 -46
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/io/archive.py +12 -17
- owid_datautils-0.6.3/owid/datautils/io/df.py +222 -0
- owid_datautils-0.6.3/owid/datautils/io/json.py +92 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/ui.py +1 -1
- owid_datautils-0.6.3/owid/datautils/web.py +144 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/pyproject.toml +32 -12
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/format/test_numbers.py +4 -4
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/google/test_config.py +4 -4
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/google/test_sheets.py +6 -6
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/io/test_archive.py +5 -6
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/io/test_df.py +2 -2
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/mocks.py +2 -2
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/test_dataframes.py +2 -2
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/test_decorators.py +1 -1
- owid_datautils-0.6.3/uv.lock +2872 -0
- owid_datautils-0.6.1/owid/datautils/io/df.py +0 -163
- owid_datautils-0.6.1/owid/datautils/io/json.py +0 -78
- owid_datautils-0.6.1/owid/datautils/web.py +0 -106
- owid_datautils-0.6.1/uv.lock +0 -2248
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.bumpversion.cfg +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.codecov.yml +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.github/workflows/python-package.yml +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.gitignore +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/.pre-commit-config.yaml +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/LICENSE +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/Makefile +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/README.md +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/Makefile +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/_static/favicon.ico +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/_static/owid.png +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/apidoc-templates/module.rst_t +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/apidoc-templates/package.rst_t +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/apidoc-templates/toc.rst_t +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/conf.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/index.rst +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/docs/make.bat +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/__init__.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/checks.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/format/__init__.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/google/__init__.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/owid/datautils/io/__init__.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/__init__.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/format/__init__.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/google/__init__.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/google/test_api.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/io/test_json.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/test_ui.py +0 -0
- {owid_datautils-0.6.1 → owid_datautils-0.6.3}/tests/test_web.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: owid-datautils
|
|
3
|
-
Version: 0.6.
|
|
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:
|
|
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:
|
|
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:
|
|
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,
|
|
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:
|
|
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:
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
44
|
-
|
|
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)
|