toolframe-sql-sqlite 0.4.1__tar.gz → 0.4.2__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 (23) hide show
  1. toolframe_sql_sqlite-0.4.2/.github/workflows/compatibility.yml +85 -0
  2. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/.github/workflows/publish.yml +6 -19
  3. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/PKG-INFO +6 -3
  4. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/README.md +4 -1
  5. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/docs/releasing.md +11 -10
  6. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/pyproject.toml +2 -2
  7. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/uv.lock +1 -1
  8. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/.github/workflows/ci.yml +0 -0
  9. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/.github/workflows/quality.yml +0 -0
  10. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/.gitignore +0 -0
  11. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/.pre-commit-config.yaml +0 -0
  12. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/CONTRIBUTING.md +0 -0
  13. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/LICENSE +0 -0
  14. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/NOTICE +0 -0
  15. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/cchk.toml +0 -0
  16. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/docs/ci.md +0 -0
  17. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/scripts/check_branch_name.py +0 -0
  18. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/scripts/check_release.py +0 -0
  19. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/scripts/validate.sh +0 -0
  20. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/src/toolframe_sql_sqlite/__init__.py +0 -0
  21. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/src/toolframe_sql_sqlite/plugin.py +0 -0
  22. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/src/toolframe_sql_sqlite/pool.py +0 -0
  23. {toolframe_sql_sqlite-0.4.1 → toolframe_sql_sqlite-0.4.2}/tests/test_storage.py +0 -0
@@ -0,0 +1,85 @@
1
+ name: SDK compatibility
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [main]
7
+ schedule:
8
+ - cron: '17 4 * * *'
9
+ workflow_dispatch:
10
+ workflow_call:
11
+
12
+ permissions:
13
+ contents: read
14
+
15
+ jobs:
16
+ wheel:
17
+ name: Build the shared plugin wheel
18
+ runs-on: ubuntu-24.04
19
+ timeout-minutes: 10
20
+ steps:
21
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
22
+ with:
23
+ persist-credentials: false
24
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
25
+ with:
26
+ python-version: '3.14.7'
27
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
28
+ with:
29
+ version: '0.12.8'
30
+ enable-cache: false
31
+ - run: uv build --no-sources --wheel --out-dir build/compatibility-wheel
32
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
33
+ with:
34
+ name: compatibility-wheel
35
+ path: build/compatibility-wheel/*.whl
36
+ if-no-files-found: error
37
+ retention-days: 7
38
+
39
+ compatibility:
40
+ name: SDK ${{ matrix.sdk }}
41
+ needs: wheel
42
+ runs-on: ubuntu-24.04
43
+ timeout-minutes: 20
44
+ strategy:
45
+ fail-fast: false
46
+ matrix:
47
+ sdk: [minimum, latest]
48
+ steps:
49
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
50
+ with:
51
+ persist-credentials: false
52
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
53
+ with:
54
+ python-version: '3.14.7'
55
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
56
+ with:
57
+ version: '0.12.8'
58
+ enable-cache: false
59
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
60
+ with:
61
+ name: compatibility-wheel
62
+ path: build/compatibility-wheel
63
+ - name: Select the unchanged wheel
64
+ id: wheels
65
+ shell: bash
66
+ run: |
67
+ plugin=(build/compatibility-wheel/toolframe_sql_sqlite-*.whl)
68
+ test "${#plugin[@]}" = 1
69
+ echo "plugin=${plugin[0]}" >> "$GITHUB_OUTPUT"
70
+ - name: Verify installed wheel and package tests
71
+ uses: toolframe/toolframe-sdk/.github/actions/plugin-compatibility@2e2a3d79f35fbdb04249e8351fe9c75fc2164269
72
+ with:
73
+ mode: ${{ matrix.sdk }}
74
+ wheel: ${{ steps.wheels.outputs.plugin }}
75
+ output: build/compatibility-${{ matrix.sdk }}
76
+ - name: Retain compatibility evidence
77
+ if: always()
78
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
79
+ with:
80
+ name: compatibility-${{ matrix.sdk }}
81
+ path: |
82
+ build/compatibility-${{ matrix.sdk }}/report.json
83
+ build/compatibility-${{ matrix.sdk }}/pytest.xml
84
+ if-no-files-found: warn
85
+ retention-days: 14
@@ -2,21 +2,12 @@ name: Publish Python package
2
2
 
3
3
  on:
4
4
  workflow_dispatch:
5
- inputs:
6
- registry:
7
- description: Package registry
8
- type: choice
9
- required: true
10
- default: testpypi
11
- options:
12
- - testpypi
13
- - pypi
14
5
 
15
6
  permissions:
16
7
  contents: read
17
8
 
18
9
  concurrency:
19
- group: publish-${{ inputs.registry }}-${{ github.ref }}
10
+ group: publish-pypi-${{ github.ref }}
20
11
  cancel-in-progress: false
21
12
 
22
13
  jobs:
@@ -37,13 +28,16 @@ jobs:
37
28
  needs: release-tag
38
29
  uses: ./.github/workflows/ci.yml
39
30
  secrets: inherit
31
+ compatibility:
32
+ uses: ./.github/workflows/compatibility.yml
33
+
40
34
  publish:
41
- needs: validate
35
+ needs: [validate, compatibility]
42
36
  if: github.ref_type == 'tag'
43
37
  runs-on: ubuntu-24.04
44
38
  timeout-minutes: 10
45
39
  environment:
46
- name: ${{ inputs.registry }}
40
+ name: pypi
47
41
  permissions:
48
42
  id-token: write
49
43
  steps:
@@ -53,12 +47,5 @@ jobs:
53
47
  name: python-distributions
54
48
  path: dist
55
49
 
56
- - name: Publish to TestPyPI
57
- if: inputs.registry == 'testpypi'
58
- uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
59
- with:
60
- repository-url: https://test.pypi.org/legacy/
61
-
62
50
  - name: Publish to PyPI
63
- if: inputs.registry == 'pypi'
64
51
  uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: toolframe-sql-sqlite
3
- Version: 0.4.1
3
+ Version: 0.4.2
4
4
  Summary: Isolated managed SQLite stores for Toolframe plugins
5
5
  Project-URL: Homepage, https://github.com/toolframe/toolframe-sql-sqlite
6
6
  Project-URL: Repository, https://github.com/toolframe/toolframe-sql-sqlite
@@ -11,7 +11,7 @@ License-Expression: Apache-2.0
11
11
  License-File: LICENSE
12
12
  License-File: NOTICE
13
13
  Requires-Python: >=3.14
14
- Requires-Dist: toolframe-sdk<0.5,>=0.4
14
+ Requires-Dist: toolframe-sdk<1,>=0.4.0
15
15
  Description-Content-Type: text/markdown
16
16
 
17
17
  # Toolframe SQLite provider
@@ -70,7 +70,7 @@ Development: `uv sync --group dev`, `uv run pytest -q`, `uv build --no-sources`.
70
70
  The sibling SDK UV source is a development convenience; wheels depend only on the
71
71
  published SDK contract.
72
72
 
73
- For isolated local validation, GitHub Actions and manual TestPyPI/PyPI publishing,
73
+ For isolated local validation, GitHub Actions and manual PyPI publishing,
74
74
  see [CI and publishing](docs/ci.md).
75
75
 
76
76
  For release validation and Trusted Publisher setup, see [releasing](docs/releasing.md).
@@ -86,3 +86,6 @@ preserved; PostgreSQL variants in migration declarations do not change SQLite
86
86
  history.
87
87
 
88
88
  For development hooks and contribution rules, see [Contributing](CONTRIBUTING.md).
89
+
90
+ Plugin dependencies allow compatible SDK 0.x updates from the declared minimum.
91
+ See the [SDK compatibility policy](https://github.com/toolframe/toolframe-sdk/blob/main/docs/compatibility.md) for API guarantees and minimum/latest verification.
@@ -54,7 +54,7 @@ Development: `uv sync --group dev`, `uv run pytest -q`, `uv build --no-sources`.
54
54
  The sibling SDK UV source is a development convenience; wheels depend only on the
55
55
  published SDK contract.
56
56
 
57
- For isolated local validation, GitHub Actions and manual TestPyPI/PyPI publishing,
57
+ For isolated local validation, GitHub Actions and manual PyPI publishing,
58
58
  see [CI and publishing](docs/ci.md).
59
59
 
60
60
  For release validation and Trusted Publisher setup, see [releasing](docs/releasing.md).
@@ -70,3 +70,6 @@ preserved; PostgreSQL variants in migration declarations do not change SQLite
70
70
  history.
71
71
 
72
72
  For development hooks and contribution rules, see [Contributing](CONTRIBUTING.md).
73
+
74
+ Plugin dependencies allow compatible SDK 0.x updates from the declared minimum.
75
+ See the [SDK compatibility policy](https://github.com/toolframe/toolframe-sdk/blob/main/docs/compatibility.md) for API guarantees and minimum/latest verification.
@@ -10,13 +10,14 @@ artifacts produced by that successful run.
10
10
  Run the repository's existing validation workflow; its local commands and
11
11
  integration coverage are described in [CI](ci.md).
12
12
 
13
- Publish `toolframe-sdk==0.4.1` first. The coordinated order and native CLI channels are documented in
13
+ Publish any newly required SDK version before the plugin. Compatible Core or SDK
14
+ updates alone do not require a plugin release. The coordinated order and native CLI channels are documented in
14
15
  [Toolframe's release guide](https://github.com/toolframe/toolframe-core/blob/main/docs/releasing.md).
15
16
 
16
17
  ## Trusted Publishers
17
18
 
18
- Create GitHub environments named `testpypi` and `pypi`. On each corresponding
19
- package index, configure a normal or pending Trusted Publisher with these values:
19
+ Create a GitHub environment named `pypi`. On PyPI, configure a normal or
20
+ pending Trusted Publisher with these values:
20
21
 
21
22
  | Field | Value |
22
23
  | --- | --- |
@@ -24,7 +25,7 @@ package index, configure a normal or pending Trusted Publisher with these values
24
25
  | GitHub owner | `toolframe` |
25
26
  | GitHub repository | `toolframe-sql-sqlite` |
26
27
  | Workflow filename | `publish.yml` |
27
- | Environment | `testpypi` or `pypi`, matching the index |
28
+ | Environment | `pypi` |
28
29
 
29
30
  If publishing from another owner, use that actual owner in the publisher binding.
30
31
  Follow [PyPI's Trusted Publishing guide](https://docs.pypi.org/trusted-publishers/using-a-publisher/).
@@ -40,7 +41,7 @@ sibling owner where the workflow exposes that variable.
40
41
  ## Publish and verify
41
42
 
42
43
  After the release commit and matching tag are available remotely, manually run
43
- `publish.yml` at `v0.4.1`, selecting `testpypi` first and then `pypi`.
44
+ `publish.yml` at the matching `v<project.version>` tag to publish to PyPI.
44
45
  A branch or mismatched tag is rejected. Downloaded files are the artifacts from
45
46
  that run; the publishing job does not rebuild them. Published files cannot be
46
47
  replaced under the same version.
@@ -49,11 +50,11 @@ After PyPI publication, verify a clean installation:
49
50
 
50
51
  ```sh
51
52
  uv venv --python 3.14.7 build/consumer
52
- uv pip install --python build/consumer/bin/python 'toolframe-sql-sqlite==0.4.1'
53
+ uv pip install --python build/consumer/bin/python 'toolframe-sql-sqlite==0.4.2'
53
54
  uv pip check --python build/consumer/bin/python
54
55
  ```
55
56
 
56
- TestPyPI does not mirror dependencies. Test the specific artifact against an
57
- explicit dependency source; a local or TestPyPI check alone does not demonstrate
58
- that production PyPI resolution works. Keep logs, hashes and exact revisions in
59
- CI artifacts or ignored local evidence directories.
57
+ Test the specific artifact with dependencies from PyPI. Local artifact checks
58
+ alone do not demonstrate that the published package resolves correctly from
59
+ PyPI. Keep logs, hashes and exact revisions in CI artifacts or ignored local
60
+ evidence directories.
@@ -4,14 +4,14 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "toolframe-sql-sqlite"
7
- version = "0.4.1"
7
+ version = "0.4.2"
8
8
  description = "Isolated managed SQLite stores for Toolframe plugins"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
11
11
  license-files = ["LICENSE", "NOTICE"]
12
12
  authors = [{ name = "byfb", email = "62798989+byfb@users.noreply.github.com" }]
13
13
  requires-python = ">=3.14"
14
- dependencies = ["toolframe-sdk>=0.4,<0.5"]
14
+ dependencies = ["toolframe-sdk>=0.4.0,<1"]
15
15
 
16
16
  [project.urls]
17
17
  Homepage = "https://github.com/toolframe/toolframe-sql-sqlite"
@@ -310,7 +310,7 @@ dev = [
310
310
 
311
311
  [[package]]
312
312
  name = "toolframe-sql-sqlite"
313
- version = "0.4.1"
313
+ version = "0.4.2"
314
314
  source = { editable = "." }
315
315
  dependencies = [
316
316
  { name = "toolframe-sdk" },