You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat: add a snowflake extra (posit-cli[snowflake]) that forwards to rsconnect-python[snowflake] #28
To deploy to Connect on Snowflake (SPCS), users need rsconnect-python's snowflake extra, which pulls in snowflake-cli. posit-cli has no way to request it, so users have to reach past posit-cli into its dependency:
This leaks an implementation detail (posit-cli wraps rsconnect-python) into the install instructions. Users also have to know the upstream package name and extra.
Proposal
Add a snowflake extra to posit-cli that forwards to rsconnect-python's extra:
posit-cli[snowflake] installs snowflake-cli through rsconnect-python's snowflake extra.
The extra's rsconnect-python version range matches the base dependency, so the two can't drift apart.
The README documents the extra, along with any other Snowflake setup that's needed.
Optional: a test or CI check that the extra resolves, for example uv pip install --dry-run '.[snowflake]'.
Notes
rsconnect-python currently ships two extras, keyring and snowflake. posit-cli already depends on keyring directly, so snowflake is the only one left to expose.
If rsconnect-python adds more extras later, we should decide case by case whether to alias them.
Activity
tdstein commentedon Oct 28, 2026
Codex Workpad
Plan
Acceptance Criteria
posit-cli[snowflake]installssnowflake-clithrough the upstream extra.Validation
uv lock --lockeduv pip install --dry-run '.[snowflake]'rsconnect-pythonandsnowflake-cli.uv pip install '.[snowflake]'snowflake-cli3.31.0 in an isolated Python 3.13 environment..venv/bin/snow --version.venv/bin/posit connect add --help | rg -- '--snowflake-connection-name'uv run --locked --python 3.13 --extra test pytest -c pyproject.toml -p no:cacheprovider testsgit diff --checkEvidence
Reproduction
Notes
AGENTS.mdexists; the supplied instructions apply.uv.lockand changes some shared dependency versions.Confusions