Skip to content

feat: add a snowflake extra (posit-cli[snowflake]) that forwards to rsconnect-python[snowflake] #28

Closed

Description

@tdstein

🤖 ## Problem

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:

uv tool install posit-cli --with 'rsconnect-python[snowflake]'

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:

[project.optional-dependencies]
snowflake = ["rsconnect-python[snowflake]>=1.30,<2"]

The install then becomes:

uv tool install 'posit-cli[snowflake]'
pip install 'posit-cli[snowflake]'

Acceptance criteria

  • 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

  1. self-assigned this
    on Oct 28, 2026
  2. added
    enhancementNew feature or request
    ready-for-agentFully specified, ready for an autonomous coding agent
    on Oct 28, 2026
  3. tdstein commented on Oct 28, 2026

    @tdstein
    ContributorAuthor

    Codex Workpad

    Plan

    • 1. Add the Snowflake installation extra
      • 1.1 Inspect dependency constraints and Snowflake setup requirements.
      • 1.2 Add the extra, update the lockfile, and document installation and setup.
      • 1.3 Verify dependency resolution and review the final diff.

    Acceptance Criteria

    • posit-cli[snowflake] installs snowflake-cli through the upstream extra.
    • The upstream version constraint stays aligned with the base dependency.
    • The README explains installation and necessary Snowflake setup.

    Validation

    • Command:
      • uv lock --locked
    • Commit: b738f9d
    • Command:
      • uv pip install --dry-run '.[snowflake]'
    • Commit: b738f9d
    • Observed: Resolved rsconnect-python and snowflake-cli.
    • Command:
      • uv pip install '.[snowflake]'
    • Commit: b738f9d
    • Observed: Installed snowflake-cli 3.31.0 in an isolated Python 3.13 environment.
    • Command:
      • .venv/bin/snow --version
    • Commit: b738f9d
    • Observed: Snowflake CLI 3.31.0 runs.
    • Command:
      • .venv/bin/posit connect add --help | rg -- '--snowflake-connection-name'
    • Commit: b738f9d
    • Command:
      • uv run --locked --python 3.13 --extra test pytest -c pyproject.toml -p no:cacheprovider tests
    • Commit: b738f9d
    • Observed: 72 tests passed.
    • Command:
      • git diff --check
    • Commit: b738f9d

    Evidence

    Reproduction

    • N/A: This is a new optional installation capability, not a runtime defect.

    Notes

    • No repository-root AGENTS.md exists; the supplied instructions apply.
    • The extra leaves the version unbounded because the required base dependency supplies the sole version constraint.
    • Resolving the new extra adds Snowflake's transitive dependencies to uv.lock and changes some shared dependency versions.
    • Handoff: PR feat: add Snowflake installation extra #29, commit b738f9d. Installation, CLI smoke checks, lockfile check, and 72 tests passed.

    Confusions

    • None.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestready-for-agentFully specified, ready for an autonomous coding agent

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions