feature:pip-install

Install the declared features from PyPI as pre-built packages.


Usage

splent feature:pip-install

No arguments or options. The command installs the features declared in the active product’s pyproject.toml.


Description

Reads [tool.splent].features from the product’s pyproject.toml and installs each entry as a PyPI package via pip install.

This is what the production image runs. scripts/00_install_features.sh, which does pip install -e against the local checkout, is the development path and never runs here.

Two things about this are worth stating plainly rather than discovering.

  • Only [tool.splent].features is read. features_dev and features_prod are not installed by this command, even though product:build merges them into the deploy env and Compose. A feature declared only under features_prod reaches the image’s configuration and is never installed into it, and fails at import time with nothing pointing back at the declaration. The command lists any such entry before it starts.
  • An entry without @version becomes a bare package name. It does not fail, and it does not install the workspace checkout. pip resolves it against PyPI and installs whatever is published there, which may be years old. Every one is reported at the end for exactly that reason.

Version resolution

pyproject entry pip command
splent-io/splent_feature_auth@v1.5.3 pip install splent_feature_auth==1.5.3
splent-io/splent_feature_auth (no version) pip install splent_feature_auth (whatever PyPI serves)

Example output

  Installing 7 feature(s) from PyPI...

  installing splent_feature_auth==1.5.3
  ok splent_feature_auth==1.5.3
  installing splent_feature_public==1.5.2
  ok splent_feature_public==1.5.2
  ...

  All 7 feature(s) installed from PyPI.

A failure does not stop the run. Every failing spec is collected, listed at the end, and the command exits non zero.


Where each path applies

Context What installs the features Where they come from
Development scripts/00_install_features.sh (pip install -e), run by entrypoints/entrypoint.dev.sh <product>/features/<org>/<name>, filled by product:resolve from the git tag into .splent_cache/features/, or symlinked to a checkout at the workspace root
Production image splent feature:pip-install, in the builder stage of docker/Dockerfile.<product>.prod PyPI
CI pipeline splent feature:pip-install PyPI

Your local code only ever reaches a container in development. A production build resolves nothing from the workspace.


Requirements

  • SPLENT_APP must be set.
  • PyPI must be reachable.
  • Features must be published to PyPI (via feature:release).

See also


Back to top

splent. Distributed by an LGPL license v3. Contact us: drorganvidez@us.es