meltano-state-backend-snowflake 0.1.0__tar.gz → 0.2.0__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.
- meltano_state_backend_snowflake-0.2.0/.github/dependabot.yml +25 -0
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/.github/workflows/release.yaml +4 -4
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/.github/workflows/test.yaml +15 -17
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/.pre-commit-config.yaml +16 -9
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/PKG-INFO +24 -13
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/README.md +17 -9
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/pyproject.toml +58 -15
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/src/meltano_state_backend_snowflake/backend.py +25 -48
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/tests/test_backend.py +19 -43
- meltano_state_backend_snowflake-0.2.0/uv.lock +1953 -0
- meltano_state_backend_snowflake-0.1.0/uv.lock +0 -2581
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/.github/CODEOWNERS +0 -0
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/.github/semantic.yml +0 -0
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/.gitignore +0 -0
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/.python-version +0 -0
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/LICENSE +0 -0
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/fixtures/project/.gitignore +0 -0
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/fixtures/project/meltano.yml +0 -0
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/src/meltano_state_backend_snowflake/__init__.py +0 -0
- {meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/src/meltano_state_backend_snowflake/py.typed +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: github-actions
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: quarterly
|
|
7
|
+
groups:
|
|
8
|
+
actions:
|
|
9
|
+
patterns:
|
|
10
|
+
- "*"
|
|
11
|
+
- package-ecosystem: uv
|
|
12
|
+
directory: "/"
|
|
13
|
+
schedule:
|
|
14
|
+
interval: monthly
|
|
15
|
+
allow:
|
|
16
|
+
- dependency-type: all
|
|
17
|
+
versioning-strategy: lockfile-only
|
|
18
|
+
commit-message:
|
|
19
|
+
prefix: "fix: "
|
|
20
|
+
prefix-development: "chore: "
|
|
21
|
+
groups:
|
|
22
|
+
lockfile-dev:
|
|
23
|
+
dependency-type: "development"
|
|
24
|
+
lockfile-runtime:
|
|
25
|
+
dependency-type: "production"
|
|
@@ -15,8 +15,8 @@ jobs:
|
|
|
15
15
|
package_name: ${{ steps.baipp.outputs.package_name }}
|
|
16
16
|
package_version: ${{ steps.baipp.outputs.package_version }}
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
19
|
-
- uses: hynek/build-and-inspect-python-package@
|
|
18
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
19
|
+
- uses: hynek/build-and-inspect-python-package@efb823f52190ad02594531168b7a2d5790e66516 # v2.14.0
|
|
20
20
|
id: baipp
|
|
21
21
|
|
|
22
22
|
publish:
|
|
@@ -29,8 +29,8 @@ jobs:
|
|
|
29
29
|
url: https://pypi.org/project/${{ needs.build.outputs.package_name }}/${{ needs.build.outputs.package_version }}
|
|
30
30
|
|
|
31
31
|
steps:
|
|
32
|
-
- uses: actions/download-artifact@
|
|
32
|
+
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
|
|
33
33
|
with:
|
|
34
34
|
name: Packages
|
|
35
35
|
path: dist
|
|
36
|
-
- uses: pypa/gh-action-pypi-publish@
|
|
36
|
+
- uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
|
|
@@ -10,7 +10,6 @@ on:
|
|
|
10
10
|
- uv.lock
|
|
11
11
|
- .github/workflows/test.yaml
|
|
12
12
|
pull_request:
|
|
13
|
-
branches: [main]
|
|
14
13
|
paths:
|
|
15
14
|
- src/**
|
|
16
15
|
- tests/**
|
|
@@ -34,10 +33,10 @@ jobs:
|
|
|
34
33
|
name: Typing
|
|
35
34
|
runs-on: ubuntu-latest
|
|
36
35
|
steps:
|
|
37
|
-
- uses: actions/checkout@
|
|
38
|
-
- uses: actions/setup-python@
|
|
36
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
37
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
39
38
|
id: setup-python
|
|
40
|
-
- uses: astral-sh/setup-uv@
|
|
39
|
+
- uses: astral-sh/setup-uv@803947b9bd8e9f986429fa0c5a41c367cd732b41 # v7.2.1
|
|
41
40
|
- env:
|
|
42
41
|
UV_PYTHON: ${{ steps.setup-python.outputs.python-version }}
|
|
43
42
|
run: >
|
|
@@ -47,40 +46,39 @@ jobs:
|
|
|
47
46
|
tox -e types
|
|
48
47
|
|
|
49
48
|
test:
|
|
50
|
-
name:
|
|
49
|
+
name: Test
|
|
51
50
|
runs-on: ${{ matrix.os }}
|
|
52
|
-
continue-on-error: ${{ matrix.python-version == '3.13' }}
|
|
53
51
|
strategy:
|
|
54
52
|
fail-fast: false
|
|
55
53
|
matrix:
|
|
56
54
|
os: ["ubuntu-latest"]
|
|
57
55
|
python-version:
|
|
58
|
-
- "3.9"
|
|
59
56
|
- "3.10"
|
|
60
57
|
- "3.11"
|
|
61
58
|
- "3.12"
|
|
62
59
|
- "3.13"
|
|
60
|
+
- "3.14"
|
|
63
61
|
include:
|
|
64
|
-
- python-version: "3.
|
|
62
|
+
- python-version: "3.14"
|
|
65
63
|
os: "windows-latest"
|
|
66
64
|
|
|
67
|
-
- python-version: "3.
|
|
65
|
+
- python-version: "3.14"
|
|
68
66
|
os: "macos-latest"
|
|
69
67
|
|
|
70
68
|
steps:
|
|
71
|
-
- uses: actions/checkout@
|
|
72
|
-
- uses: actions/setup-python@
|
|
69
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
70
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
73
71
|
id: setup-python
|
|
74
72
|
with:
|
|
75
73
|
python-version: ${{ matrix.python-version }}
|
|
76
74
|
allow-prereleases: true
|
|
77
|
-
- uses: astral-sh/setup-uv@
|
|
75
|
+
- uses: astral-sh/setup-uv@803947b9bd8e9f986429fa0c5a41c367cd732b41 # v7.2.1
|
|
78
76
|
- run: >
|
|
79
77
|
uvx
|
|
80
78
|
--with tox-uv
|
|
81
79
|
--with tox
|
|
82
80
|
tox -e ${{ matrix.python-version }}
|
|
83
|
-
- uses: actions/upload-artifact@
|
|
81
|
+
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
|
84
82
|
with:
|
|
85
83
|
include-hidden-files: true
|
|
86
84
|
name: coverage-data-${{ matrix.os }}-py${{ matrix.python-version }}
|
|
@@ -91,13 +89,13 @@ jobs:
|
|
|
91
89
|
runs-on: ubuntu-latest
|
|
92
90
|
needs: test
|
|
93
91
|
steps:
|
|
94
|
-
- uses: actions/checkout@
|
|
95
|
-
- uses: actions/setup-python@
|
|
96
|
-
- uses: actions/download-artifact@
|
|
92
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
93
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
94
|
+
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
|
|
97
95
|
with:
|
|
98
96
|
pattern: coverage-data-*
|
|
99
97
|
merge-multiple: true
|
|
100
|
-
- uses: astral-sh/setup-uv@
|
|
98
|
+
- uses: astral-sh/setup-uv@803947b9bd8e9f986429fa0c5a41c367cd732b41 # v7.2.1
|
|
101
99
|
- name: Combine coverage data and generate report
|
|
102
100
|
run: >
|
|
103
101
|
uvx
|
|
@@ -3,14 +3,14 @@ ci:
|
|
|
3
3
|
autofix_prs: true
|
|
4
4
|
autoupdate_branch: main
|
|
5
5
|
autoupdate_commit_msg: "chore: Update pre-commit hooks"
|
|
6
|
-
autoupdate_schedule:
|
|
6
|
+
autoupdate_schedule: quarterly
|
|
7
7
|
submodules: false
|
|
8
8
|
skip:
|
|
9
9
|
- uv-lock
|
|
10
10
|
|
|
11
11
|
repos:
|
|
12
12
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
13
|
-
rev:
|
|
13
|
+
rev: v6.0.0
|
|
14
14
|
hooks:
|
|
15
15
|
- id: check-merge-conflict
|
|
16
16
|
- id: check-toml
|
|
@@ -20,24 +20,31 @@ repos:
|
|
|
20
20
|
- id: trailing-whitespace
|
|
21
21
|
|
|
22
22
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
23
|
-
rev: v0.
|
|
23
|
+
rev: v0.15.0
|
|
24
24
|
hooks:
|
|
25
25
|
- id: ruff-check
|
|
26
26
|
args: [--fix, --exit-non-zero-on-fix, --show-fixes]
|
|
27
27
|
- id: ruff-format
|
|
28
28
|
|
|
29
29
|
- repo: https://github.com/python-jsonschema/check-jsonschema
|
|
30
|
-
rev: 0.
|
|
30
|
+
rev: 0.36.1
|
|
31
31
|
hooks:
|
|
32
|
+
- id: check-dependabot
|
|
32
33
|
- id: check-github-workflows
|
|
33
34
|
- id: check-meltano
|
|
34
|
-
- id: check-renovate
|
|
35
|
-
language: python
|
|
36
|
-
additional_dependencies:
|
|
37
|
-
- pyjson5==1.6.8
|
|
38
35
|
|
|
39
36
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
40
|
-
rev: "0.
|
|
37
|
+
rev: "0.9.30"
|
|
41
38
|
hooks:
|
|
42
39
|
- id: uv-lock
|
|
43
40
|
- id: uv-sync
|
|
41
|
+
|
|
42
|
+
- repo: https://github.com/crate-ci/typos
|
|
43
|
+
rev: v1.43.1
|
|
44
|
+
hooks:
|
|
45
|
+
- id: typos
|
|
46
|
+
|
|
47
|
+
- repo: https://github.com/hukkin/mdformat
|
|
48
|
+
rev: 1.0.0 # Use the ref you want to point at
|
|
49
|
+
hooks:
|
|
50
|
+
- id: mdformat
|
|
@@ -1,27 +1,33 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meltano-state-backend-snowflake
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Meltano State Backend for Snowflake
|
|
5
|
+
Project-URL: Documentation, https://github.com/meltano/meltano-state-backend-snowflake
|
|
6
|
+
Project-URL: Source, https://github.com/meltano/meltano-state-backend-snowflake
|
|
7
|
+
Project-URL: Issues, https://github.com/meltano/meltano-state-backend-snowflake/issues
|
|
5
8
|
Author-email: Taylor Murphy <taylor@arch.dev>
|
|
6
9
|
License-Expression: MIT
|
|
7
10
|
License-File: LICENSE
|
|
8
11
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
10
12
|
Classifier: Programming Language :: Python :: 3.10
|
|
11
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
-
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Requires-Python: >=3.10
|
|
15
18
|
Requires-Dist: meltano>=3.7
|
|
16
|
-
Requires-Dist: snowflake-connector-python<4
|
|
19
|
+
Requires-Dist: snowflake-connector-python<5,>=4
|
|
17
20
|
Description-Content-Type: text/markdown
|
|
18
21
|
|
|
19
22
|
# `meltano-state-backend-snowflake`
|
|
20
23
|
|
|
24
|
+
<!-- Display these if and when we publish to PyPI. -->
|
|
25
|
+
|
|
26
|
+
<!--
|
|
21
27
|
[](https://pypi.org/project/meltano-state-backend-snowflake)
|
|
22
|
-
[](https://pypi.org/project/meltano-state-backend-snowflake)
|
|
28
|
+
[](https://pypi.org/project/meltano-state-backend-snowflake) -->
|
|
23
29
|
|
|
24
|
-
This is a [Meltano]
|
|
30
|
+
This is a [Meltano] extension that provides a [Snowflake] [state backend][state-backend].
|
|
25
31
|
|
|
26
32
|
## Installation
|
|
27
33
|
|
|
@@ -32,14 +38,14 @@ This package needs to be installed in the same Python environment as Meltano.
|
|
|
32
38
|
#### With [uv]
|
|
33
39
|
|
|
34
40
|
```bash
|
|
35
|
-
uv tool install --with meltano-state-backend-snowflake meltano
|
|
41
|
+
uv tool install --with git+https://github.com/meltano/meltano-state-backend-snowflake.git meltano
|
|
36
42
|
```
|
|
37
43
|
|
|
38
44
|
#### With [pipx]
|
|
39
45
|
|
|
40
46
|
```bash
|
|
41
47
|
pipx install meltano
|
|
42
|
-
pipx inject meltano
|
|
48
|
+
pipx inject meltano git+https://github.com/meltano/meltano-state-backend-snowflake.git
|
|
43
49
|
```
|
|
44
50
|
|
|
45
51
|
## Configuration
|
|
@@ -47,6 +53,7 @@ pipx inject meltano 'meltano-state-backend-snowflake
|
|
|
47
53
|
To store state in Snowflake, set the `state_backend.uri` setting to `snowflake://<user>:<password>@<account>/<database>/<schema>`.
|
|
48
54
|
|
|
49
55
|
State will be stored in two tables that Meltano will create automatically:
|
|
56
|
+
|
|
50
57
|
- `meltano_state` - Stores the actual state data
|
|
51
58
|
- `meltano_state_locks` - Manages concurrency locks
|
|
52
59
|
|
|
@@ -88,6 +95,7 @@ state_backend:
|
|
|
88
95
|
#### Security Considerations
|
|
89
96
|
|
|
90
97
|
When storing credentials:
|
|
98
|
+
|
|
91
99
|
- Use environment variables for sensitive values in production
|
|
92
100
|
- Consider using Snowflake key-pair authentication (future enhancement)
|
|
93
101
|
- Ensure the user has CREATE TABLE, INSERT, UPDATE, DELETE, and SELECT privileges
|
|
@@ -96,8 +104,8 @@ Example using environment variables:
|
|
|
96
104
|
|
|
97
105
|
```bash
|
|
98
106
|
export MELTANO_STATE_BACKEND_SNOWFLAKE_PASSWORD='my_secure_password'
|
|
99
|
-
meltano config meltano
|
|
100
|
-
meltano config meltano
|
|
107
|
+
meltano config set meltano state_backend.uri 'snowflake://my_user@my_account/my_database'
|
|
108
|
+
meltano config set meltano state_backend.snowflake.warehouse 'my_warehouse'
|
|
101
109
|
```
|
|
102
110
|
|
|
103
111
|
## Development
|
|
@@ -113,17 +121,20 @@ uv sync
|
|
|
113
121
|
Run all tests, type checks, linting, and coverage:
|
|
114
122
|
|
|
115
123
|
```bash
|
|
116
|
-
uvx
|
|
124
|
+
uvx --with tox-uv tox run-parallel
|
|
117
125
|
```
|
|
118
126
|
|
|
119
127
|
### Bump the version
|
|
120
128
|
|
|
129
|
+
Using the [GitHub CLI][gh]:
|
|
130
|
+
|
|
121
131
|
```bash
|
|
122
|
-
|
|
132
|
+
gh release create v<new-version>
|
|
123
133
|
```
|
|
124
134
|
|
|
135
|
+
[gh]: https://cli.github.com/
|
|
125
136
|
[meltano]: https://meltano.com
|
|
137
|
+
[pipx]: https://github.com/pypa/pipx
|
|
126
138
|
[snowflake]: https://www.snowflake.com/
|
|
127
139
|
[state-backend]: https://docs.meltano.com/concepts/state_backends
|
|
128
|
-
[pipx]: https://github.com/pypa/pipx
|
|
129
140
|
[uv]: https://docs.astral.sh/uv
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# `meltano-state-backend-snowflake`
|
|
2
2
|
|
|
3
|
+
<!-- Display these if and when we publish to PyPI. -->
|
|
4
|
+
|
|
5
|
+
<!--
|
|
3
6
|
[](https://pypi.org/project/meltano-state-backend-snowflake)
|
|
4
|
-
[](https://pypi.org/project/meltano-state-backend-snowflake)
|
|
7
|
+
[](https://pypi.org/project/meltano-state-backend-snowflake) -->
|
|
5
8
|
|
|
6
|
-
This is a [Meltano]
|
|
9
|
+
This is a [Meltano] extension that provides a [Snowflake] [state backend][state-backend].
|
|
7
10
|
|
|
8
11
|
## Installation
|
|
9
12
|
|
|
@@ -14,14 +17,14 @@ This package needs to be installed in the same Python environment as Meltano.
|
|
|
14
17
|
#### With [uv]
|
|
15
18
|
|
|
16
19
|
```bash
|
|
17
|
-
uv tool install --with meltano-state-backend-snowflake meltano
|
|
20
|
+
uv tool install --with git+https://github.com/meltano/meltano-state-backend-snowflake.git meltano
|
|
18
21
|
```
|
|
19
22
|
|
|
20
23
|
#### With [pipx]
|
|
21
24
|
|
|
22
25
|
```bash
|
|
23
26
|
pipx install meltano
|
|
24
|
-
pipx inject meltano
|
|
27
|
+
pipx inject meltano git+https://github.com/meltano/meltano-state-backend-snowflake.git
|
|
25
28
|
```
|
|
26
29
|
|
|
27
30
|
## Configuration
|
|
@@ -29,6 +32,7 @@ pipx inject meltano 'meltano-state-backend-snowflake
|
|
|
29
32
|
To store state in Snowflake, set the `state_backend.uri` setting to `snowflake://<user>:<password>@<account>/<database>/<schema>`.
|
|
30
33
|
|
|
31
34
|
State will be stored in two tables that Meltano will create automatically:
|
|
35
|
+
|
|
32
36
|
- `meltano_state` - Stores the actual state data
|
|
33
37
|
- `meltano_state_locks` - Manages concurrency locks
|
|
34
38
|
|
|
@@ -70,6 +74,7 @@ state_backend:
|
|
|
70
74
|
#### Security Considerations
|
|
71
75
|
|
|
72
76
|
When storing credentials:
|
|
77
|
+
|
|
73
78
|
- Use environment variables for sensitive values in production
|
|
74
79
|
- Consider using Snowflake key-pair authentication (future enhancement)
|
|
75
80
|
- Ensure the user has CREATE TABLE, INSERT, UPDATE, DELETE, and SELECT privileges
|
|
@@ -78,8 +83,8 @@ Example using environment variables:
|
|
|
78
83
|
|
|
79
84
|
```bash
|
|
80
85
|
export MELTANO_STATE_BACKEND_SNOWFLAKE_PASSWORD='my_secure_password'
|
|
81
|
-
meltano config meltano
|
|
82
|
-
meltano config meltano
|
|
86
|
+
meltano config set meltano state_backend.uri 'snowflake://my_user@my_account/my_database'
|
|
87
|
+
meltano config set meltano state_backend.snowflake.warehouse 'my_warehouse'
|
|
83
88
|
```
|
|
84
89
|
|
|
85
90
|
## Development
|
|
@@ -95,17 +100,20 @@ uv sync
|
|
|
95
100
|
Run all tests, type checks, linting, and coverage:
|
|
96
101
|
|
|
97
102
|
```bash
|
|
98
|
-
uvx
|
|
103
|
+
uvx --with tox-uv tox run-parallel
|
|
99
104
|
```
|
|
100
105
|
|
|
101
106
|
### Bump the version
|
|
102
107
|
|
|
108
|
+
Using the [GitHub CLI][gh]:
|
|
109
|
+
|
|
103
110
|
```bash
|
|
104
|
-
|
|
111
|
+
gh release create v<new-version>
|
|
105
112
|
```
|
|
106
113
|
|
|
114
|
+
[gh]: https://cli.github.com/
|
|
107
115
|
[meltano]: https://meltano.com
|
|
116
|
+
[pipx]: https://github.com/pypa/pipx
|
|
108
117
|
[snowflake]: https://www.snowflake.com/
|
|
109
118
|
[state-backend]: https://docs.meltano.com/concepts/state_backends
|
|
110
|
-
[pipx]: https://github.com/pypa/pipx
|
|
111
119
|
[uv]: https://docs.astral.sh/uv
|
{meltano_state_backend_snowflake-0.1.0 → meltano_state_backend_snowflake-0.2.0}/pyproject.toml
RENAMED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
build-backend = "hatchling.build"
|
|
3
|
-
|
|
4
|
-
requires = [ "hatchling" ]
|
|
3
|
+
requires = [ "hatchling", "hatch-vcs" ]
|
|
5
4
|
|
|
6
5
|
[project]
|
|
7
6
|
name = "meltano-state-backend-snowflake"
|
|
8
|
-
|
|
7
|
+
dynamic = [ "version" ]
|
|
9
8
|
description = "Meltano State Backend for Snowflake"
|
|
10
|
-
readme = "README.md"
|
|
11
9
|
license = "MIT"
|
|
12
10
|
license-files = [
|
|
13
11
|
"LICENSE",
|
|
@@ -15,20 +13,26 @@ license-files = [
|
|
|
15
13
|
authors = [
|
|
16
14
|
{ name = "Taylor Murphy", email = "taylor@arch.dev" },
|
|
17
15
|
]
|
|
18
|
-
|
|
16
|
+
readme = "README.md"
|
|
17
|
+
requires-python = ">=3.10"
|
|
19
18
|
classifiers = [
|
|
20
19
|
"Programming Language :: Python :: 3 :: Only",
|
|
21
|
-
"Programming Language :: Python :: 3.9",
|
|
22
20
|
"Programming Language :: Python :: 3.10",
|
|
23
21
|
"Programming Language :: Python :: 3.11",
|
|
24
22
|
"Programming Language :: Python :: 3.12",
|
|
25
23
|
"Programming Language :: Python :: 3.13",
|
|
24
|
+
"Programming Language :: Python :: 3.14",
|
|
26
25
|
]
|
|
27
26
|
dependencies = [
|
|
28
27
|
"meltano>=3.7",
|
|
29
|
-
"snowflake-connector-python>=
|
|
28
|
+
"snowflake-connector-python>=4,<5",
|
|
30
29
|
]
|
|
31
30
|
|
|
31
|
+
[project.urls]
|
|
32
|
+
Documentation = "https://github.com/meltano/meltano-state-backend-snowflake"
|
|
33
|
+
Source = "https://github.com/meltano/meltano-state-backend-snowflake"
|
|
34
|
+
Issues = "https://github.com/meltano/meltano-state-backend-snowflake/issues"
|
|
35
|
+
|
|
32
36
|
[project.entry-points."meltano.settings"]
|
|
33
37
|
snowflake_account = "meltano_state_backend_snowflake.backend:SNOWFLAKE_ACCOUNT"
|
|
34
38
|
snowflake_database = "meltano_state_backend_snowflake.backend:SNOWFLAKE_DATABASE"
|
|
@@ -48,16 +52,22 @@ dev = [
|
|
|
48
52
|
{ include-group = "types" },
|
|
49
53
|
]
|
|
50
54
|
lint = [
|
|
51
|
-
"ruff>=0.
|
|
55
|
+
"ruff>=0.15",
|
|
52
56
|
]
|
|
53
57
|
tests = [
|
|
54
|
-
"coverage[toml]>=7.
|
|
55
|
-
"pytest>=
|
|
58
|
+
"coverage[toml]>=7.13",
|
|
59
|
+
"pytest>=9",
|
|
56
60
|
]
|
|
57
61
|
types = [
|
|
58
|
-
"
|
|
62
|
+
{ include-group = "tests" },
|
|
63
|
+
"mypy>=1.19",
|
|
64
|
+
"ty>=0.0.14",
|
|
59
65
|
]
|
|
60
66
|
|
|
67
|
+
[tool.hatch.version]
|
|
68
|
+
fallback-version = "0.0.0.dev0"
|
|
69
|
+
source = "vcs"
|
|
70
|
+
|
|
61
71
|
[tool.ruff]
|
|
62
72
|
line-length = 100
|
|
63
73
|
|
|
@@ -124,10 +134,21 @@ parametrize-values-type = "tuple"
|
|
|
124
134
|
[tool.ruff.lint.pydocstyle]
|
|
125
135
|
convention = "google"
|
|
126
136
|
|
|
127
|
-
[tool.pytest
|
|
137
|
+
[tool.pytest]
|
|
128
138
|
addopts = [
|
|
129
139
|
"--durations=10",
|
|
140
|
+
"-ra",
|
|
141
|
+
"--strict-config",
|
|
142
|
+
"--strict-markers",
|
|
130
143
|
]
|
|
144
|
+
filterwarnings = [
|
|
145
|
+
"error",
|
|
146
|
+
"once:The 'version' field in meltano.yml is deprecated:DeprecationWarning",
|
|
147
|
+
]
|
|
148
|
+
log_level = "INFO"
|
|
149
|
+
minversion = "9"
|
|
150
|
+
testpaths = ["tests"]
|
|
151
|
+
xfail_strict = true
|
|
131
152
|
|
|
132
153
|
[tool.coverage.paths]
|
|
133
154
|
package = [
|
|
@@ -156,11 +177,11 @@ requires = [ "tox", "tox-uv" ]
|
|
|
156
177
|
env_list = [
|
|
157
178
|
"types",
|
|
158
179
|
"lint",
|
|
180
|
+
"3.14",
|
|
159
181
|
"3.13",
|
|
160
182
|
"3.12",
|
|
161
183
|
"3.11",
|
|
162
184
|
"3.10",
|
|
163
|
-
"3.9",
|
|
164
185
|
"coverage",
|
|
165
186
|
]
|
|
166
187
|
|
|
@@ -171,11 +192,11 @@ commands = [ [ "coverage", "run", "-m", "pytest", { replace = "posargs", default
|
|
|
171
192
|
|
|
172
193
|
[tool.tox.env.coverage]
|
|
173
194
|
depends = [
|
|
174
|
-
"3.9",
|
|
175
195
|
"3.10",
|
|
176
196
|
"3.11",
|
|
177
197
|
"3.12",
|
|
178
198
|
"3.13",
|
|
199
|
+
"3.14",
|
|
179
200
|
]
|
|
180
201
|
dependency_groups = [ "tests" ]
|
|
181
202
|
commands = [
|
|
@@ -197,10 +218,32 @@ dependency_groups = [ "tests", "types" ]
|
|
|
197
218
|
commands = [
|
|
198
219
|
[
|
|
199
220
|
"mypy",
|
|
200
|
-
"--strict",
|
|
201
221
|
{ replace = "posargs", default = [
|
|
202
222
|
"src/meltano_state_backend_snowflake",
|
|
203
223
|
"tests",
|
|
204
224
|
], extend = true },
|
|
205
225
|
],
|
|
226
|
+
[
|
|
227
|
+
"ty",
|
|
228
|
+
"check",
|
|
229
|
+
{ replace = "posargs", default = [
|
|
230
|
+
"src/meltano_state_backend_snowflake",
|
|
231
|
+
"tests",
|
|
232
|
+
], extend = true },
|
|
233
|
+
],
|
|
234
|
+
]
|
|
235
|
+
|
|
236
|
+
[tool.mypy]
|
|
237
|
+
enable_error_code = [
|
|
238
|
+
"ignore-without-code",
|
|
239
|
+
"redundant-expr",
|
|
240
|
+
"truthy-bool",
|
|
206
241
|
]
|
|
242
|
+
follow_untyped_imports = true
|
|
243
|
+
strict = true
|
|
244
|
+
warn_unreachable = true
|
|
245
|
+
warn_unused_configs = true
|
|
246
|
+
warn_unused_ignores = true
|
|
247
|
+
|
|
248
|
+
[tool.ty.rules]
|
|
249
|
+
unused-type-ignore-comment = "ignore"
|