etlplus 0.3.10__tar.gz → 0.3.13__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.3.10 → etlplus-0.3.13}/.github/actions/python-bootstrap/action.yml +5 -1
- {etlplus-0.3.10 → etlplus-0.3.13}/.github/workflows/ci.yml +30 -13
- {etlplus-0.3.10/etlplus.egg-info → etlplus-0.3.13}/PKG-INFO +1 -1
- {etlplus-0.3.10 → etlplus-0.3.13/etlplus.egg-info}/PKG-INFO +1 -1
- {etlplus-0.3.10 → etlplus-0.3.13}/.editorconfig +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/.gitattributes +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/.gitignore +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/.pre-commit-config.yaml +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/.ruff.toml +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/CODE_OF_CONDUCT.md +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/CONTRIBUTING.md +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/DEMO.md +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/LICENSE +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/Makefile +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/README.md +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/REFERENCES.md +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/docs/pipeline-guide.md +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/docs/snippets/installation_version.md +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/__init__.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/__main__.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/__version__.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/README.md +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/__init__.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/auth.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/config.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/endpoint_client.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/errors.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/pagination/__init__.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/pagination/client.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/pagination/config.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/pagination/paginator.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/rate_limiting/__init__.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/rate_limiting/config.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/rate_limiting/rate_limiter.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/request_manager.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/retry_manager.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/transport.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/types.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/cli.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/__init__.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/connector.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/jobs.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/pipeline.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/profile.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/types.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/utils.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/enums.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/extract.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/file.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/load.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/mixins.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/py.typed +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/run.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/run_helpers.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/transform.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/types.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/utils.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/validate.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/validation/__init__.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/validation/utils.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus.egg-info/SOURCES.txt +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus.egg-info/dependency_links.txt +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus.egg-info/entry_points.txt +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus.egg-info/requires.txt +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/etlplus.egg-info/top_level.txt +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/examples/README.md +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/examples/configs/pipeline.yml +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/examples/data/sample.csv +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/examples/data/sample.json +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/examples/data/sample.xml +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/examples/data/sample.xsd +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/examples/data/sample.yaml +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/examples/quickstart_python.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/pyproject.toml +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/pytest.ini +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/setup.cfg +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/setup.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/__init__.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/conftest.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/conftest.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_cli.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_examples_data_parity.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_pagination_strategy.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_pipeline_smoke.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_pipeline_yaml_load.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_run.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_run_profile_pagination_defaults.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_run_profile_rate_limit_defaults.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/conftest.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_auth.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_config.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_endpoint_client.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_mocks.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_pagination_client.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_pagination_config.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_paginator.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_rate_limit_config.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_rate_limiter.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_request_manager.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_retry_manager.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_transport.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/config/test_u_connector.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/config/test_u_pipeline.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/conftest.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_cli.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_extract.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_file.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_load.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_transform.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_utils.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_validate.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/validation/test_u_validation_utils.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tools/run_pipeline.py +0 -0
- {etlplus-0.3.10 → etlplus-0.3.13}/tools/update_demo_snippets.py +0 -0
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
#
|
|
6
6
|
# A GitHub Actions action to set up Python and install Python package
|
|
7
7
|
# dependencies.
|
|
8
|
+
#
|
|
9
|
+
# Notes
|
|
10
|
+
# - External action references are each pinned to a specific commit SHA for
|
|
11
|
+
# improved security and stability (e.g., reduced supply-chain attack risks).
|
|
8
12
|
|
|
9
13
|
---
|
|
10
14
|
|
|
@@ -25,7 +29,7 @@ inputs:
|
|
|
25
29
|
runs:
|
|
26
30
|
using: composite
|
|
27
31
|
steps:
|
|
28
|
-
- uses: actions/setup-python@v5
|
|
32
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
29
33
|
with:
|
|
30
34
|
python-version: ${{ inputs.python-version }}
|
|
31
35
|
|
|
@@ -4,6 +4,16 @@
|
|
|
4
4
|
# Copyright © 2025 Dagitali LLC. All rights reserved.
|
|
5
5
|
#
|
|
6
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 action references are each pinned to a specific commit SHA for
|
|
16
|
+
# improved security and stability (e.g., reduced supply-chain attack risks).
|
|
7
17
|
|
|
8
18
|
---
|
|
9
19
|
|
|
@@ -28,9 +38,7 @@ on:
|
|
|
28
38
|
pull_request:
|
|
29
39
|
branches: [ main, develop ]
|
|
30
40
|
|
|
31
|
-
permissions:
|
|
32
|
-
contents: read
|
|
33
|
-
id-token: write
|
|
41
|
+
permissions: {}
|
|
34
42
|
|
|
35
43
|
jobs:
|
|
36
44
|
lint:
|
|
@@ -38,8 +46,10 @@ jobs:
|
|
|
38
46
|
strategy: &python-matrix
|
|
39
47
|
matrix:
|
|
40
48
|
python-version: ['3.13', '3.14']
|
|
49
|
+
permissions:
|
|
50
|
+
contents: read
|
|
41
51
|
steps:
|
|
42
|
-
- uses: actions/checkout@v4
|
|
52
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
43
53
|
with:
|
|
44
54
|
fetch-depth: 0
|
|
45
55
|
- uses: ./.github/actions/python-bootstrap
|
|
@@ -55,8 +65,10 @@ jobs:
|
|
|
55
65
|
test:
|
|
56
66
|
runs-on: ubuntu-latest
|
|
57
67
|
strategy: *python-matrix
|
|
68
|
+
permissions:
|
|
69
|
+
contents: read
|
|
58
70
|
steps:
|
|
59
|
-
- uses: actions/checkout@v4
|
|
71
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
60
72
|
with:
|
|
61
73
|
fetch-depth: 0
|
|
62
74
|
- uses: ./.github/actions/python-bootstrap
|
|
@@ -72,8 +84,10 @@ jobs:
|
|
|
72
84
|
runs-on: ubuntu-latest
|
|
73
85
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
74
86
|
needs: [lint, test]
|
|
87
|
+
permissions:
|
|
88
|
+
contents: read
|
|
75
89
|
steps:
|
|
76
|
-
- uses: actions/checkout@v4
|
|
90
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
77
91
|
with:
|
|
78
92
|
fetch-depth: 0
|
|
79
93
|
- uses: ./.github/actions/python-bootstrap
|
|
@@ -84,7 +98,7 @@ jobs:
|
|
|
84
98
|
run: |
|
|
85
99
|
python -m build
|
|
86
100
|
- name: Upload distributions
|
|
87
|
-
uses: actions/upload-artifact@v4
|
|
101
|
+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
88
102
|
with:
|
|
89
103
|
name: dist-artifacts
|
|
90
104
|
path: dist/*
|
|
@@ -98,16 +112,16 @@ jobs:
|
|
|
98
112
|
permissions:
|
|
99
113
|
contents: write
|
|
100
114
|
steps:
|
|
101
|
-
- uses: actions/checkout@v4
|
|
115
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
102
116
|
with:
|
|
103
117
|
fetch-depth: 0
|
|
104
118
|
- name: Download distributions
|
|
105
|
-
uses: actions/download-artifact@v4
|
|
119
|
+
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
|
|
106
120
|
with:
|
|
107
121
|
name: dist-artifacts
|
|
108
122
|
path: dist
|
|
109
123
|
- name: Publish GitHub release
|
|
110
|
-
uses: softprops/action-gh-release@v2
|
|
124
|
+
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
|
|
111
125
|
with:
|
|
112
126
|
files: dist/*
|
|
113
127
|
generate_release_notes: true
|
|
@@ -117,19 +131,22 @@ jobs:
|
|
|
117
131
|
runs-on: ubuntu-latest
|
|
118
132
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
119
133
|
needs: build
|
|
134
|
+
permissions:
|
|
135
|
+
contents: read
|
|
136
|
+
id-token: write
|
|
120
137
|
environment:
|
|
121
138
|
name: pypi
|
|
122
139
|
url: https://pypi.org/project/etlplus/
|
|
123
140
|
steps:
|
|
124
|
-
- uses: actions/checkout@v4
|
|
141
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
125
142
|
with:
|
|
126
143
|
fetch-depth: 0
|
|
127
144
|
- name: Download distributions
|
|
128
|
-
uses: actions/download-artifact@v4
|
|
145
|
+
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
|
|
129
146
|
with:
|
|
130
147
|
name: dist-artifacts
|
|
131
148
|
path: dist
|
|
132
149
|
- name: Publish to PyPI
|
|
133
|
-
uses: pypa/gh-action-pypi-publish@
|
|
150
|
+
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1
|
|
134
151
|
with:
|
|
135
152
|
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
|
|
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
|
{etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_run_profile_pagination_defaults.py
RENAMED
|
File without changes
|
{etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_run_profile_rate_limit_defaults.py
RENAMED
|
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
|