etlplus 0.3.5__tar.gz → 0.3.15__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 (115) hide show
  1. etlplus-0.3.15/.github/actions/python-bootstrap/action.yml +42 -0
  2. etlplus-0.3.15/.github/workflows/ci.yml +159 -0
  3. {etlplus-0.3.5 → etlplus-0.3.15}/PKG-INFO +1 -1
  4. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus.egg-info/PKG-INFO +1 -1
  5. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus.egg-info/SOURCES.txt +1 -0
  6. etlplus-0.3.5/.github/workflows/ci.yml +0 -87
  7. {etlplus-0.3.5 → etlplus-0.3.15}/.editorconfig +0 -0
  8. {etlplus-0.3.5 → etlplus-0.3.15}/.gitattributes +0 -0
  9. {etlplus-0.3.5 → etlplus-0.3.15}/.gitignore +0 -0
  10. {etlplus-0.3.5 → etlplus-0.3.15}/.pre-commit-config.yaml +0 -0
  11. {etlplus-0.3.5 → etlplus-0.3.15}/.ruff.toml +0 -0
  12. {etlplus-0.3.5 → etlplus-0.3.15}/CODE_OF_CONDUCT.md +0 -0
  13. {etlplus-0.3.5 → etlplus-0.3.15}/CONTRIBUTING.md +0 -0
  14. {etlplus-0.3.5 → etlplus-0.3.15}/DEMO.md +0 -0
  15. {etlplus-0.3.5 → etlplus-0.3.15}/LICENSE +0 -0
  16. {etlplus-0.3.5 → etlplus-0.3.15}/Makefile +0 -0
  17. {etlplus-0.3.5 → etlplus-0.3.15}/README.md +0 -0
  18. {etlplus-0.3.5 → etlplus-0.3.15}/REFERENCES.md +0 -0
  19. {etlplus-0.3.5 → etlplus-0.3.15}/docs/pipeline-guide.md +0 -0
  20. {etlplus-0.3.5 → etlplus-0.3.15}/docs/snippets/installation_version.md +0 -0
  21. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/__init__.py +0 -0
  22. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/__main__.py +0 -0
  23. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/__version__.py +0 -0
  24. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/README.md +0 -0
  25. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/__init__.py +0 -0
  26. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/auth.py +0 -0
  27. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/config.py +0 -0
  28. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/endpoint_client.py +0 -0
  29. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/errors.py +0 -0
  30. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/pagination/__init__.py +0 -0
  31. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/pagination/client.py +0 -0
  32. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/pagination/config.py +0 -0
  33. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/pagination/paginator.py +0 -0
  34. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/rate_limiting/__init__.py +0 -0
  35. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/rate_limiting/config.py +0 -0
  36. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/rate_limiting/rate_limiter.py +0 -0
  37. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/request_manager.py +0 -0
  38. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/retry_manager.py +0 -0
  39. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/transport.py +0 -0
  40. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/api/types.py +0 -0
  41. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/cli.py +0 -0
  42. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/config/__init__.py +0 -0
  43. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/config/connector.py +0 -0
  44. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/config/jobs.py +0 -0
  45. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/config/pipeline.py +0 -0
  46. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/config/profile.py +0 -0
  47. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/config/types.py +0 -0
  48. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/config/utils.py +0 -0
  49. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/enums.py +0 -0
  50. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/extract.py +0 -0
  51. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/file.py +0 -0
  52. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/load.py +0 -0
  53. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/mixins.py +0 -0
  54. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/py.typed +0 -0
  55. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/run.py +0 -0
  56. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/run_helpers.py +0 -0
  57. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/transform.py +0 -0
  58. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/types.py +0 -0
  59. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/utils.py +0 -0
  60. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/validate.py +0 -0
  61. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/validation/__init__.py +0 -0
  62. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus/validation/utils.py +0 -0
  63. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus.egg-info/dependency_links.txt +0 -0
  64. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus.egg-info/entry_points.txt +0 -0
  65. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus.egg-info/requires.txt +0 -0
  66. {etlplus-0.3.5 → etlplus-0.3.15}/etlplus.egg-info/top_level.txt +0 -0
  67. {etlplus-0.3.5 → etlplus-0.3.15}/examples/README.md +0 -0
  68. {etlplus-0.3.5 → etlplus-0.3.15}/examples/configs/pipeline.yml +0 -0
  69. {etlplus-0.3.5 → etlplus-0.3.15}/examples/data/sample.csv +0 -0
  70. {etlplus-0.3.5 → etlplus-0.3.15}/examples/data/sample.json +0 -0
  71. {etlplus-0.3.5 → etlplus-0.3.15}/examples/data/sample.xml +0 -0
  72. {etlplus-0.3.5 → etlplus-0.3.15}/examples/data/sample.xsd +0 -0
  73. {etlplus-0.3.5 → etlplus-0.3.15}/examples/data/sample.yaml +0 -0
  74. {etlplus-0.3.5 → etlplus-0.3.15}/examples/quickstart_python.py +0 -0
  75. {etlplus-0.3.5 → etlplus-0.3.15}/pyproject.toml +0 -0
  76. {etlplus-0.3.5 → etlplus-0.3.15}/pytest.ini +0 -0
  77. {etlplus-0.3.5 → etlplus-0.3.15}/setup.cfg +0 -0
  78. {etlplus-0.3.5 → etlplus-0.3.15}/setup.py +0 -0
  79. {etlplus-0.3.5 → etlplus-0.3.15}/tests/__init__.py +0 -0
  80. {etlplus-0.3.5 → etlplus-0.3.15}/tests/conftest.py +0 -0
  81. {etlplus-0.3.5 → etlplus-0.3.15}/tests/integration/conftest.py +0 -0
  82. {etlplus-0.3.5 → etlplus-0.3.15}/tests/integration/test_i_cli.py +0 -0
  83. {etlplus-0.3.5 → etlplus-0.3.15}/tests/integration/test_i_examples_data_parity.py +0 -0
  84. {etlplus-0.3.5 → etlplus-0.3.15}/tests/integration/test_i_pagination_strategy.py +0 -0
  85. {etlplus-0.3.5 → etlplus-0.3.15}/tests/integration/test_i_pipeline_smoke.py +0 -0
  86. {etlplus-0.3.5 → etlplus-0.3.15}/tests/integration/test_i_pipeline_yaml_load.py +0 -0
  87. {etlplus-0.3.5 → etlplus-0.3.15}/tests/integration/test_i_run.py +0 -0
  88. {etlplus-0.3.5 → etlplus-0.3.15}/tests/integration/test_i_run_profile_pagination_defaults.py +0 -0
  89. {etlplus-0.3.5 → etlplus-0.3.15}/tests/integration/test_i_run_profile_rate_limit_defaults.py +0 -0
  90. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/conftest.py +0 -0
  91. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_auth.py +0 -0
  92. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_config.py +0 -0
  93. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_endpoint_client.py +0 -0
  94. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_mocks.py +0 -0
  95. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_pagination_client.py +0 -0
  96. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_pagination_config.py +0 -0
  97. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_paginator.py +0 -0
  98. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_rate_limit_config.py +0 -0
  99. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_rate_limiter.py +0 -0
  100. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_request_manager.py +0 -0
  101. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_retry_manager.py +0 -0
  102. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/api/test_u_transport.py +0 -0
  103. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/config/test_u_connector.py +0 -0
  104. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/config/test_u_pipeline.py +0 -0
  105. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/conftest.py +0 -0
  106. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/test_u_cli.py +0 -0
  107. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/test_u_extract.py +0 -0
  108. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/test_u_file.py +0 -0
  109. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/test_u_load.py +0 -0
  110. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/test_u_transform.py +0 -0
  111. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/test_u_utils.py +0 -0
  112. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/test_u_validate.py +0 -0
  113. {etlplus-0.3.5 → etlplus-0.3.15}/tests/unit/validation/test_u_validation_utils.py +0 -0
  114. {etlplus-0.3.5 → etlplus-0.3.15}/tools/run_pipeline.py +0 -0
  115. {etlplus-0.3.5 → etlplus-0.3.15}/tools/update_demo_snippets.py +0 -0
@@ -0,0 +1,42 @@
1
+ # action.yml
2
+ # ETLPlus
3
+ #
4
+ # Copyright © 2025 Dagitali LLC. All rights reserved.
5
+ #
6
+ # A GitHub Actions action to set up Python and install Python package
7
+ # dependencies.
8
+ #
9
+ # Notes
10
+ # - External GitHub Actions action references are each pinned to specific SHA
11
+ # to limit supply-chain risk.
12
+
13
+ ---
14
+
15
+ name: Setup Python and Install Dependencies
16
+
17
+ description: >-
18
+ Sets up the requested Python runtime, upgrades pip, and installs the provided
19
+ dependency list to keep workflow jobs consistent.
20
+
21
+ inputs:
22
+ python-version:
23
+ description: Python version to install via actions/setup-python
24
+ required: true
25
+ python-bootstrap:
26
+ description: Arguments passed to "pip install"
27
+ required: true
28
+
29
+ runs:
30
+ using: composite
31
+ steps:
32
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # Pinned v5
33
+ with:
34
+ python-version: ${{ inputs.python-version }}
35
+
36
+ - name: Upgrade pip
37
+ shell: bash
38
+ run: python -m pip install --upgrade pip
39
+
40
+ - name: Install dependencies
41
+ shell: bash
42
+ run: pip install ${{ inputs.python-bootstrap }}
@@ -0,0 +1,159 @@
1
+ # ci.yml
2
+ # ETLPlus
3
+ #
4
+ # Copyright © 2025 Dagitali LLC. All rights reserved.
5
+ #
6
+ # A GitHub Actions workflow configuration file for Continuous Integration (CI).
7
+ #
8
+ # Notes
9
+ # - The workflow includes jobs for linting, testing, building distributions,
10
+ # and publishing releases to GitHub and PyPI.
11
+ # - The workflow is hardened by removing global permissions and setting per-job
12
+ # scopes.
13
+ # - To harden workflow security, global permissions are absent, and per-job
14
+ # permissions are set as needed.
15
+ # - External GitHub Actions action references are each pinned to specific SHA
16
+ # to limit supply-chain risk.
17
+
18
+ ---
19
+
20
+ name: CI
21
+
22
+ on:
23
+ push:
24
+ branches:
25
+ # GitFlow branches
26
+ - main
27
+ - develop
28
+ - '**/feature/**'
29
+ - '**/bugfix/**'
30
+ - '**/release/**'
31
+ - '**/hotfix/**'
32
+
33
+ # Extended branches
34
+ - '**/chore/**'
35
+ - '**/ci/**'
36
+ - '**/docs/**'
37
+ tags: [ 'v*.*.*' ]
38
+ pull_request:
39
+ branches: [ main, develop ]
40
+
41
+ permissions: {}
42
+
43
+ jobs:
44
+ lint:
45
+ runs-on: ubuntu-latest
46
+ strategy: &python-matrix
47
+ matrix:
48
+ python-version: ['3.13', '3.14']
49
+ permissions: &permissions_read
50
+ contents: read
51
+ steps:
52
+ - &checkout_step
53
+ name: Checkout repository
54
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # Pinned v4
55
+ with:
56
+ fetch-depth: 0
57
+ - uses: ./.github/actions/python-bootstrap
58
+ with:
59
+ python-version: ${{ matrix.python-version }}
60
+ python-bootstrap: ".[dev]"
61
+ - name: Ruff check
62
+ run: |
63
+ ruff version
64
+ ruff check .
65
+ ruff format --check .
66
+
67
+ test:
68
+ runs-on: ubuntu-latest
69
+ strategy: *python-matrix
70
+ permissions: *permissions_read
71
+ steps:
72
+ - *checkout_step
73
+ - uses: ./.github/actions/python-bootstrap
74
+ with:
75
+ python-version: ${{ matrix.python-version }}
76
+ python-bootstrap: "-e .[dev,yaml]"
77
+ - name: Run tests (with coverage)
78
+ run: |
79
+ pytest -q \
80
+ --cov \
81
+ --cov-branch \
82
+ --cov-report=term-missing \
83
+ --cov-report=xml \
84
+ tests/
85
+
86
+ - name: Upload coverage reports to Codecov
87
+ if: matrix.python-version == '3.13'
88
+ uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # Pinned v5.5.2
89
+ with:
90
+ fail_ci_if_error: true
91
+ files: coverage.xml
92
+ flags: unit
93
+ name: etlplus
94
+ token: ${{ secrets.CODECOV_TOKEN }} # Omit for public repo
95
+ verbose: true
96
+
97
+ build:
98
+ name: Build distributions
99
+ runs-on: ubuntu-latest
100
+ if: &release_tag_condition >
101
+ startsWith(github.ref, 'refs/tags/v') ||
102
+ startsWith(github.ref, 'refs/tags/rc')
103
+ needs: [lint, test]
104
+ permissions: *permissions_read
105
+ steps:
106
+ - *checkout_step
107
+ - uses: ./.github/actions/python-bootstrap
108
+ with:
109
+ python-version: '3.13'
110
+ python-bootstrap: build
111
+ - name: Build distributions
112
+ run: |
113
+ python -m build
114
+ - name: Upload distributions
115
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # Pinned v4
116
+ with:
117
+ name: dist-artifacts
118
+ path: dist/*
119
+ if-no-files-found: error
120
+
121
+ release:
122
+ name: Publish GitHub Release
123
+ runs-on: ubuntu-latest
124
+ if: *release_tag_condition
125
+ needs: build
126
+ permissions:
127
+ contents: write
128
+ steps:
129
+ - *checkout_step
130
+ - &download_dist_step
131
+ name: Download distributions
132
+ uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # Pinned v4
133
+ with:
134
+ name: dist-artifacts
135
+ path: dist
136
+ - name: Publish GitHub release
137
+ uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # Pinned v2
138
+ with:
139
+ files: dist/*
140
+ generate_release_notes: true
141
+
142
+ publish:
143
+ name: Publish to PyPI
144
+ runs-on: ubuntu-latest
145
+ if: *release_tag_condition
146
+ needs: build
147
+ permissions:
148
+ contents: read
149
+ id-token: write
150
+ environment:
151
+ name: pypi
152
+ url: https://pypi.org/project/etlplus/
153
+ steps:
154
+ - *checkout_step
155
+ - *download_dist_step
156
+ - name: Publish to PyPI
157
+ uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # Pinned v1
158
+ with:
159
+ verbose: true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etlplus
3
- Version: 0.3.5
3
+ Version: 0.3.15
4
4
  Summary: A Swiss Army knife for simple ETL operations
5
5
  Home-page: https://github.com/Dagitali/ETLPlus
6
6
  Author: ETLPlus Team
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etlplus
3
- Version: 0.3.5
3
+ Version: 0.3.15
4
4
  Summary: A Swiss Army knife for simple ETL operations
5
5
  Home-page: https://github.com/Dagitali/ETLPlus
6
6
  Author: ETLPlus Team
@@ -13,6 +13,7 @@ REFERENCES.md
13
13
  pyproject.toml
14
14
  pytest.ini
15
15
  setup.py
16
+ .github/actions/python-bootstrap/action.yml
16
17
  .github/workflows/ci.yml
17
18
  docs/pipeline-guide.md
18
19
  docs/snippets/installation_version.md
@@ -1,87 +0,0 @@
1
- # ci.yml
2
- # ETLPlus
3
- #
4
- # Copyright © 2025 Dagitali LLC. All rights reserved.
5
- #
6
- # A GitHub Actions workflow configuration file for Continuous Integration (CI).
7
-
8
- ---
9
-
10
- name: CI
11
-
12
- on:
13
- push:
14
- branches: [ main, '**/feature/**', '**/fix/**', '**/chore/**' ]
15
- tags: [ 'v*.*.*' ]
16
- pull_request:
17
-
18
- permissions:
19
- contents: read
20
- id-token: write
21
-
22
- jobs:
23
- lint:
24
- runs-on: ubuntu-latest
25
- steps:
26
- - uses: actions/checkout@v4
27
- with:
28
- fetch-depth: 0
29
- - uses: actions/setup-python@v5
30
- with:
31
- python-version: '3.13'
32
- - name: Install dev tools
33
- run: |
34
- python -m pip install --upgrade pip
35
- pip install .[dev]
36
- - name: Ruff check
37
- run: |
38
- ruff version
39
- ruff check .
40
- ruff format --check .
41
-
42
- test:
43
- runs-on: ubuntu-latest
44
- strategy:
45
- matrix:
46
- python-version: ['3.13', '3.14']
47
- steps:
48
- - uses: actions/checkout@v4
49
- with:
50
- fetch-depth: 0
51
- - uses: actions/setup-python@v5
52
- with:
53
- python-version: ${{ matrix.python-version }}
54
- - name: Install package with dev+yaml extras
55
- run: |
56
- python -m pip install --upgrade pip
57
- pip install -e .[dev,yaml]
58
- - name: Run tests
59
- run: |
60
- pytest -q
61
-
62
- publish:
63
- name: Publish to PyPI
64
- runs-on: ubuntu-latest
65
- if: startsWith(github.ref, 'refs/tags/v')
66
- needs: [lint, test]
67
- environment:
68
- name: pypi
69
- url: https://pypi.org/project/etlplus/
70
- steps:
71
- - uses: actions/checkout@v4
72
- with:
73
- fetch-depth: 0
74
- - uses: actions/setup-python@v5
75
- with:
76
- python-version: '3.13'
77
- - name: Install build dependencies
78
- run: |
79
- python -m pip install --upgrade pip
80
- pip install build
81
- - name: Build distributions
82
- run: |
83
- python -m build
84
- - name: Publish to PyPI
85
- uses: pypa/gh-action-pypi-publish@release/v1
86
- with:
87
- verbose: true
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