etlplus 0.4.5__tar.gz → 0.4.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.
- {etlplus-0.4.5/etlplus.egg-info → etlplus-0.4.6}/PKG-INFO +1 -1
- {etlplus-0.4.5 → etlplus-0.4.6/etlplus.egg-info}/PKG-INFO +1 -1
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/cli/test_u_cli_main.py +35 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/.coveragerc +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/.editorconfig +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/.gitattributes +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/.github/actions/python-bootstrap/action.yml +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/.github/workflows/ci.yml +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/.gitignore +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/.pre-commit-config.yaml +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/.ruff.toml +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/CODE_OF_CONDUCT.md +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/CONTRIBUTING.md +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/DEMO.md +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/LICENSE +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/Makefile +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/README.md +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/REFERENCES.md +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/docs/pipeline-guide.md +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/docs/snippets/installation_version.md +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/__init__.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/__main__.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/__version__.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/README.md +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/__init__.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/auth.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/config.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/endpoint_client.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/errors.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/pagination/__init__.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/pagination/client.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/pagination/config.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/pagination/paginator.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/rate_limiting/__init__.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/rate_limiting/config.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/rate_limiting/rate_limiter.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/request_manager.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/retry_manager.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/transport.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/api/types.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/cli/__init__.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/cli/app.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/cli/handlers.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/cli/main.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/config/__init__.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/config/connector.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/config/jobs.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/config/pipeline.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/config/profile.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/config/types.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/config/utils.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/enums.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/extract.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/file.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/load.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/mixins.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/py.typed +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/run.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/run_helpers.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/transform.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/types.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/utils.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/validate.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/validation/__init__.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus/validation/utils.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus.egg-info/SOURCES.txt +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus.egg-info/dependency_links.txt +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus.egg-info/entry_points.txt +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus.egg-info/requires.txt +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/etlplus.egg-info/top_level.txt +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/examples/README.md +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/examples/configs/pipeline.yml +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/examples/data/sample.csv +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/examples/data/sample.json +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/examples/data/sample.xml +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/examples/data/sample.xsd +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/examples/data/sample.yaml +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/examples/quickstart_python.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/pyproject.toml +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/pytest.ini +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/setup.cfg +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/setup.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/__init__.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/conftest.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/integration/conftest.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/integration/test_i_cli.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/integration/test_i_examples_data_parity.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/integration/test_i_pagination_strategy.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/integration/test_i_pipeline_smoke.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/integration/test_i_pipeline_yaml_load.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/integration/test_i_run.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/integration/test_i_run_profile_pagination_defaults.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/integration/test_i_run_profile_rate_limit_defaults.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/conftest.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_auth.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_config.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_endpoint_client.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_mocks.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_pagination_client.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_pagination_config.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_paginator.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_rate_limit_config.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_rate_limiter.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_request_manager.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_retry_manager.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_transport.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/api/test_u_types.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/cli/conftest.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/cli/test_u_cli_app.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/cli/test_u_cli_handlers.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/config/test_u_config_utils.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/config/test_u_connector.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/config/test_u_jobs.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/config/test_u_pipeline.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/conftest.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_enums.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_extract.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_file.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_load.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_main.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_mixins.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_run.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_run_helpers.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_transform.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_utils.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_validate.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/test_u_version.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tests/unit/validation/test_u_validation_utils.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tools/run_pipeline.py +0 -0
- {etlplus-0.4.5 → etlplus-0.4.6}/tools/update_demo_snippets.py +0 -0
|
@@ -7,6 +7,7 @@ Unit tests for :mod:`etlplus.cli.main`.
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
9
|
from collections.abc import Callable
|
|
10
|
+
from importlib import import_module
|
|
10
11
|
from unittest.mock import Mock
|
|
11
12
|
|
|
12
13
|
import pytest
|
|
@@ -20,6 +21,8 @@ from etlplus.cli.main import main as cli_main
|
|
|
20
21
|
|
|
21
22
|
pytestmark = pytest.mark.unit
|
|
22
23
|
|
|
24
|
+
cli_main_module = import_module('etlplus.cli.main')
|
|
25
|
+
|
|
23
26
|
|
|
24
27
|
def _install_stub_command(
|
|
25
28
|
monkeypatch: pytest.MonkeyPatch,
|
|
@@ -52,6 +55,38 @@ def _install_stub_command(
|
|
|
52
55
|
# SECTION: TESTS ============================================================ #
|
|
53
56
|
|
|
54
57
|
|
|
58
|
+
class TestCreateParser:
|
|
59
|
+
"""Unit tests for :func:`etlplus.cli.main.create_parser`."""
|
|
60
|
+
|
|
61
|
+
def test_extract_parser_sets_handler_and_format_flag(self) -> None:
|
|
62
|
+
"""Extract parser should bind handlers and flag explicit formats."""
|
|
63
|
+
|
|
64
|
+
parser = cli_main_module.create_parser()
|
|
65
|
+
namespace = parser.parse_args(
|
|
66
|
+
['extract', 'file', 'data.csv', '--source-format', 'json'],
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
assert namespace.func is cli_main_module.cmd_extract
|
|
70
|
+
assert namespace.source_type == 'file'
|
|
71
|
+
assert namespace.source == 'data.csv'
|
|
72
|
+
assert namespace.source_format == 'json'
|
|
73
|
+
assert namespace._format_explicit is True
|
|
74
|
+
|
|
75
|
+
def test_list_parser_supports_boolean_flags(self) -> None:
|
|
76
|
+
"""List parser should surface boolean flag wiring."""
|
|
77
|
+
|
|
78
|
+
parser = cli_main_module.create_parser()
|
|
79
|
+
namespace = parser.parse_args(
|
|
80
|
+
['list', '--config', 'pipelines.yml', '--targets', '--transforms'],
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
assert namespace.func is cli_main_module.cmd_list
|
|
84
|
+
assert namespace.command == 'list'
|
|
85
|
+
assert namespace.config == 'pipelines.yml'
|
|
86
|
+
assert namespace.targets is True
|
|
87
|
+
assert namespace.transforms is True
|
|
88
|
+
|
|
89
|
+
|
|
55
90
|
class TestMain:
|
|
56
91
|
"""Unit test suite for :func:`etlplus.cli.main`."""
|
|
57
92
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|