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.
Files changed (114) hide show
  1. {etlplus-0.3.10 → etlplus-0.3.13}/.github/actions/python-bootstrap/action.yml +5 -1
  2. {etlplus-0.3.10 → etlplus-0.3.13}/.github/workflows/ci.yml +30 -13
  3. {etlplus-0.3.10/etlplus.egg-info → etlplus-0.3.13}/PKG-INFO +1 -1
  4. {etlplus-0.3.10 → etlplus-0.3.13/etlplus.egg-info}/PKG-INFO +1 -1
  5. {etlplus-0.3.10 → etlplus-0.3.13}/.editorconfig +0 -0
  6. {etlplus-0.3.10 → etlplus-0.3.13}/.gitattributes +0 -0
  7. {etlplus-0.3.10 → etlplus-0.3.13}/.gitignore +0 -0
  8. {etlplus-0.3.10 → etlplus-0.3.13}/.pre-commit-config.yaml +0 -0
  9. {etlplus-0.3.10 → etlplus-0.3.13}/.ruff.toml +0 -0
  10. {etlplus-0.3.10 → etlplus-0.3.13}/CODE_OF_CONDUCT.md +0 -0
  11. {etlplus-0.3.10 → etlplus-0.3.13}/CONTRIBUTING.md +0 -0
  12. {etlplus-0.3.10 → etlplus-0.3.13}/DEMO.md +0 -0
  13. {etlplus-0.3.10 → etlplus-0.3.13}/LICENSE +0 -0
  14. {etlplus-0.3.10 → etlplus-0.3.13}/Makefile +0 -0
  15. {etlplus-0.3.10 → etlplus-0.3.13}/README.md +0 -0
  16. {etlplus-0.3.10 → etlplus-0.3.13}/REFERENCES.md +0 -0
  17. {etlplus-0.3.10 → etlplus-0.3.13}/docs/pipeline-guide.md +0 -0
  18. {etlplus-0.3.10 → etlplus-0.3.13}/docs/snippets/installation_version.md +0 -0
  19. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/__init__.py +0 -0
  20. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/__main__.py +0 -0
  21. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/__version__.py +0 -0
  22. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/README.md +0 -0
  23. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/__init__.py +0 -0
  24. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/auth.py +0 -0
  25. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/config.py +0 -0
  26. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/endpoint_client.py +0 -0
  27. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/errors.py +0 -0
  28. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/pagination/__init__.py +0 -0
  29. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/pagination/client.py +0 -0
  30. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/pagination/config.py +0 -0
  31. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/pagination/paginator.py +0 -0
  32. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/rate_limiting/__init__.py +0 -0
  33. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/rate_limiting/config.py +0 -0
  34. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/rate_limiting/rate_limiter.py +0 -0
  35. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/request_manager.py +0 -0
  36. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/retry_manager.py +0 -0
  37. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/transport.py +0 -0
  38. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/api/types.py +0 -0
  39. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/cli.py +0 -0
  40. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/__init__.py +0 -0
  41. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/connector.py +0 -0
  42. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/jobs.py +0 -0
  43. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/pipeline.py +0 -0
  44. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/profile.py +0 -0
  45. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/types.py +0 -0
  46. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/config/utils.py +0 -0
  47. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/enums.py +0 -0
  48. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/extract.py +0 -0
  49. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/file.py +0 -0
  50. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/load.py +0 -0
  51. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/mixins.py +0 -0
  52. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/py.typed +0 -0
  53. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/run.py +0 -0
  54. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/run_helpers.py +0 -0
  55. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/transform.py +0 -0
  56. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/types.py +0 -0
  57. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/utils.py +0 -0
  58. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/validate.py +0 -0
  59. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/validation/__init__.py +0 -0
  60. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus/validation/utils.py +0 -0
  61. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus.egg-info/SOURCES.txt +0 -0
  62. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus.egg-info/dependency_links.txt +0 -0
  63. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus.egg-info/entry_points.txt +0 -0
  64. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus.egg-info/requires.txt +0 -0
  65. {etlplus-0.3.10 → etlplus-0.3.13}/etlplus.egg-info/top_level.txt +0 -0
  66. {etlplus-0.3.10 → etlplus-0.3.13}/examples/README.md +0 -0
  67. {etlplus-0.3.10 → etlplus-0.3.13}/examples/configs/pipeline.yml +0 -0
  68. {etlplus-0.3.10 → etlplus-0.3.13}/examples/data/sample.csv +0 -0
  69. {etlplus-0.3.10 → etlplus-0.3.13}/examples/data/sample.json +0 -0
  70. {etlplus-0.3.10 → etlplus-0.3.13}/examples/data/sample.xml +0 -0
  71. {etlplus-0.3.10 → etlplus-0.3.13}/examples/data/sample.xsd +0 -0
  72. {etlplus-0.3.10 → etlplus-0.3.13}/examples/data/sample.yaml +0 -0
  73. {etlplus-0.3.10 → etlplus-0.3.13}/examples/quickstart_python.py +0 -0
  74. {etlplus-0.3.10 → etlplus-0.3.13}/pyproject.toml +0 -0
  75. {etlplus-0.3.10 → etlplus-0.3.13}/pytest.ini +0 -0
  76. {etlplus-0.3.10 → etlplus-0.3.13}/setup.cfg +0 -0
  77. {etlplus-0.3.10 → etlplus-0.3.13}/setup.py +0 -0
  78. {etlplus-0.3.10 → etlplus-0.3.13}/tests/__init__.py +0 -0
  79. {etlplus-0.3.10 → etlplus-0.3.13}/tests/conftest.py +0 -0
  80. {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/conftest.py +0 -0
  81. {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_cli.py +0 -0
  82. {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_examples_data_parity.py +0 -0
  83. {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_pagination_strategy.py +0 -0
  84. {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_pipeline_smoke.py +0 -0
  85. {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_pipeline_yaml_load.py +0 -0
  86. {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_run.py +0 -0
  87. {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_run_profile_pagination_defaults.py +0 -0
  88. {etlplus-0.3.10 → etlplus-0.3.13}/tests/integration/test_i_run_profile_rate_limit_defaults.py +0 -0
  89. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/conftest.py +0 -0
  90. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_auth.py +0 -0
  91. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_config.py +0 -0
  92. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_endpoint_client.py +0 -0
  93. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_mocks.py +0 -0
  94. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_pagination_client.py +0 -0
  95. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_pagination_config.py +0 -0
  96. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_paginator.py +0 -0
  97. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_rate_limit_config.py +0 -0
  98. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_rate_limiter.py +0 -0
  99. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_request_manager.py +0 -0
  100. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_retry_manager.py +0 -0
  101. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/api/test_u_transport.py +0 -0
  102. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/config/test_u_connector.py +0 -0
  103. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/config/test_u_pipeline.py +0 -0
  104. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/conftest.py +0 -0
  105. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_cli.py +0 -0
  106. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_extract.py +0 -0
  107. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_file.py +0 -0
  108. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_load.py +0 -0
  109. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_transform.py +0 -0
  110. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_utils.py +0 -0
  111. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/test_u_validate.py +0 -0
  112. {etlplus-0.3.10 → etlplus-0.3.13}/tests/unit/validation/test_u_validation_utils.py +0 -0
  113. {etlplus-0.3.10 → etlplus-0.3.13}/tools/run_pipeline.py +0 -0
  114. {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@release/v1
150
+ uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1
134
151
  with:
135
152
  verbose: true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etlplus
3
- Version: 0.3.10
3
+ Version: 0.3.13
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.10
3
+ Version: 0.3.13
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
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