Skip to main content

An alternative to Terraform for SQL databases without using a state.

Project description

Publishing Instructions

Prereqs

1. Lock the dependency before publishing

Your tool.uv.sources workspace links (sqliac = { workspace = true }) only resolve locally — outside the workspace, pip/uv fall back to dependencies = ["sqliac"] with no version bound. Pin it now, or a future core release can silently break the published adapter wheel with nothing to stop it:

# sqliac_adapters/sqliac_snowflake/pyproject.toml
dependencies = [
    "sqliac>=0.1.0,<0.2",
    "snowflake-connector-python[secure-local-storage]",
    "cryptography",
]

2. Build both from the workspace root

uv build only builds the root project by default in a workspace — target each member explicitly:

rm -rf dist/
uv build --package sqliac
uv build --package sqliac-snowflake
ls dist/   # expect 4 files: sdist + wheel × 2 packages

3. Dry run on TestPyPI first

This is the step that actually catches the entry-point bug from earlier — TestPyPI install is the only way to confirm sqliac-snowflake resolves outside the workspace, since local dev never exercises the plugin-discovery path for real.

export UV_PUBLISH_TOKEN=<testpypi-token>
uv publish --publish-url https://test.pypi.org/legacy/ dist/sqliac-0.1.0*
uv publish --publish-url https://test.pypi.org/legacy/ dist/sqliac_snowflake-0.1.0*

Verify in a throwaway venv:

uv venv /tmp/sqliac-check && source /tmp/sqliac-check/bin/activate
pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ sqliac-snowflake
sqliac list   # must print "snowflake" — confirms the entry point resolves outside the workspace

--extra-index-url is needed because your real dependencies (jinja2, snowflake-connector-python, etc.) aren't on TestPyPI.

4. Publish for real — core first

Order matters for the reason above, not for pip resolution (pip doesn't validate a dependency exists at publish time) — but publishing core first means anyone who installs the adapter mid-release-window gets a working dependency instead of a 404.

export UV_PUBLISH_TOKEN=<pypi-token>
uv publish dist/sqliac-0.1.0*
uv publish dist/sqliac_snowflake-0.1.0*

5. Verify the real thing

uv venv /tmp/sqliac-verify && source /tmp/sqliac-verify/bin/activate
pip install sqliac-snowflake
sqliac list

Strategic note, not tactical

Per rule #2 — manual token exports don't scale past release one. Once this works, move to a GitHub Actions workflow using PyPI Trusted Publishing (OIDC — no long-lived token to rotate or leak) triggered on tag push, running the same uv build + uv publish steps above for each package. That's the point where "publish two packages" stops being a thing a human remembers to do correctly in order, and becomes a thing that can't be done wrong.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqliac-0.1.2.tar.gz (36.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqliac-0.1.2-py3-none-any.whl (38.3 kB view details)

Uploaded Python 3

File details

Details for the file sqliac-0.1.2.tar.gz.

File metadata

  • Download URL: sqliac-0.1.2.tar.gz
  • Upload date:
  • Size: 36.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sqliac-0.1.2.tar.gz
Algorithm Hash digest
SHA256 71058525fe24dc964553c70c6df549553607ac262462b072c819ccce86d6e855
MD5 7eb8d970d2357f565f1cab59707277df
BLAKE2b-256 e668e0903c2e504d1c329f0515229456abac2834d1c3d83745708453c0d13d33

See more details on using hashes here.

File details

Details for the file sqliac-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: sqliac-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 38.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sqliac-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7785b04614cb89aee0da07924a001580959e4d35b05560f3216e72b4f79f3f02
MD5 13e9bce46fd92db0a74a810597fd7277
BLAKE2b-256 26e0b3348a4536db74789094ccba162ea2e512f4461396cc66fee774f2d74ae7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page