toolframe-sql-sqlite 0.4.0__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.
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/.github/workflows/ci.yml +1 -1
- toolframe_sql_sqlite-0.4.2/.github/workflows/compatibility.yml +85 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/.github/workflows/publish.yml +6 -19
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/PKG-INFO +6 -3
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/README.md +4 -1
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/docs/ci.md +1 -1
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/docs/releasing.md +12 -11
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/pyproject.toml +2 -2
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/scripts/validate.sh +3 -2
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/uv.lock +3 -2
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/.github/workflows/quality.yml +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/.gitignore +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/.pre-commit-config.yaml +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/CONTRIBUTING.md +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/LICENSE +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/NOTICE +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/cchk.toml +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/scripts/check_branch_name.py +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/scripts/check_release.py +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/src/toolframe_sql_sqlite/__init__.py +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/src/toolframe_sql_sqlite/plugin.py +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/src/toolframe_sql_sqlite/pool.py +0 -0
- {toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/tests/test_storage.py +0 -0
|
@@ -26,7 +26,7 @@ jobs:
|
|
|
26
26
|
with:
|
|
27
27
|
repository: ${{ vars.TOOLFRAME_REPOSITORY_OWNER || github.repository_owner }}/toolframe-sdk
|
|
28
28
|
token: ${{ secrets.TOOLFRAME_READ_TOKEN || github.token }}
|
|
29
|
-
ref:
|
|
29
|
+
ref: 539ced4dbdf9e303ec0f0205a35d65287a480b2a
|
|
30
30
|
path: toolframe-sdk
|
|
31
31
|
persist-credentials: false
|
|
32
32
|
|
|
@@ -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-${{
|
|
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:
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Install Python 3.14.7, uv 0.12.8, Git and Bash. Keep a readable sibling
|
|
6
6
|
`../toolframe-sdk` Git checkout containing commit
|
|
7
|
-
`
|
|
7
|
+
`539ced4dbdf9e303ec0f0205a35d65287a480b2a`. Then run:
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
10
|
uv python install 3.14.7
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Releasing toolframe-sql-sqlite
|
|
2
2
|
|
|
3
|
-
The distribution name is `toolframe-sql-sqlite
|
|
3
|
+
The distribution name is `toolframe-sql-sqlite`. The version is defined in `pyproject.toml`.
|
|
4
4
|
Release tags must exactly match `v<project.version>`. Ordinary CI never uploads
|
|
5
5
|
packages. The manual `publish.yml` workflow reruns validation and publishes only
|
|
6
6
|
artifacts produced by that successful run.
|
|
@@ -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
|
|
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
|
|
19
|
-
|
|
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 | `
|
|
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 `
|
|
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.
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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.
|
|
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
|
|
14
|
+
dependencies = ["toolframe-sdk>=0.4.0,<1"]
|
|
15
15
|
|
|
16
16
|
[project.urls]
|
|
17
17
|
Homepage = "https://github.com/toolframe/toolframe-sql-sqlite"
|
|
@@ -4,7 +4,7 @@ set -euo pipefail
|
|
|
4
4
|
|
|
5
5
|
repo_root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
|
|
6
6
|
sdk_source=${TOOLFRAME_SDK_SOURCE:-"$repo_root/../toolframe-sdk"}
|
|
7
|
-
sdk_revision=
|
|
7
|
+
sdk_revision=539ced4dbdf9e303ec0f0205a35d65287a480b2a
|
|
8
8
|
python_version=3.14.7
|
|
9
9
|
output=${1:-"$repo_root/dist/ci"}
|
|
10
10
|
|
|
@@ -59,6 +59,7 @@ import tarfile
|
|
|
59
59
|
import tomllib
|
|
60
60
|
import zipfile
|
|
61
61
|
from pathlib import Path
|
|
62
|
+
from packaging.requirements import Requirement
|
|
62
63
|
|
|
63
64
|
dist, project = map(Path, sys.argv[1:])
|
|
64
65
|
metadata = tomllib.loads((project / "pyproject.toml").read_text())["project"]
|
|
@@ -71,7 +72,7 @@ with zipfile.ZipFile(wheels[0]) as wheel, tarfile.open(sdists[0]) as sdist:
|
|
|
71
72
|
assert wheel_metadata["Name"] == metadata["name"]
|
|
72
73
|
assert wheel_metadata["Version"] == metadata["version"]
|
|
73
74
|
assert wheel_metadata["License-Expression"] == metadata["license"]
|
|
74
|
-
assert wheel_metadata.get_all("Requires-Dist") == metadata["dependencies"]
|
|
75
|
+
assert {Requirement(value) for value in wheel_metadata.get_all("Requires-Dist")} == {Requirement(value) for value in metadata["dependencies"]}
|
|
75
76
|
for filename in ("LICENSE", "NOTICE"):
|
|
76
77
|
wheel_path = next(name for name in wheel.namelist() if name.endswith(f"/licenses/{filename}"))
|
|
77
78
|
sdist_path = next(name for name in sdist.getnames() if name.endswith(f"/{filename}"))
|
|
@@ -282,7 +282,7 @@ wheels = [
|
|
|
282
282
|
|
|
283
283
|
[[package]]
|
|
284
284
|
name = "toolframe-sdk"
|
|
285
|
-
version = "0.4.
|
|
285
|
+
version = "0.4.1"
|
|
286
286
|
source = { editable = "../toolframe-sdk" }
|
|
287
287
|
dependencies = [
|
|
288
288
|
{ name = "jsonschema" },
|
|
@@ -305,11 +305,12 @@ dev = [
|
|
|
305
305
|
{ name = "pytest", specifier = ">=8,<10" },
|
|
306
306
|
{ name = "pytest-asyncio", specifier = ">=1,<2" },
|
|
307
307
|
{ name = "ruff", specifier = ">=0.12,<1" },
|
|
308
|
+
{ name = "tomlkit", specifier = ">=0.13,<1" },
|
|
308
309
|
]
|
|
309
310
|
|
|
310
311
|
[[package]]
|
|
311
312
|
name = "toolframe-sql-sqlite"
|
|
312
|
-
version = "0.4.
|
|
313
|
+
version = "0.4.2"
|
|
313
314
|
source = { editable = "." }
|
|
314
315
|
dependencies = [
|
|
315
316
|
{ name = "toolframe-sdk" },
|
|
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
|
{toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/src/toolframe_sql_sqlite/__init__.py
RENAMED
|
File without changes
|
{toolframe_sql_sqlite-0.4.0 → toolframe_sql_sqlite-0.4.2}/src/toolframe_sql_sqlite/plugin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|