On this page
PyPI pipeline implementation that builds and publishes Python packages to PyPI, authenticating via PYPI_TOKEN or TWINE_PASSWORD credentials.
#rlsbl.pipelines.pypi
#rlsbl.pipelines.pypi
PyPI pipeline implementation that builds and publishes Python packages to PyPI, authenticating via PYPI_TOKEN or TWINE_PASSWORD credentials.
#normalize_module_name
def normalize_module_name(dist_name: str) -> strNormalize a PyPI distribution name to an importable module name.
Lowercases and collapses runs of -, _, and . into a single underscore (the standard import-name form of a distribution name).
#launcher_module_name
def launcher_module_name(subdir: str) -> strResolve the launcher module dir name from the target's pyproject.toml.
The module directory is named after the distribution's normalized name so hatchling's default package auto-detection finds it. When the manifest is absent (scaffold hard-errors on this separately) or has no name, falls back to a neutral placeholder so callers that only need a non-publish path (e.g. publish-template resolution) do not crash.
#PypiPipeline
Pipeline that builds and publishes Python packages to PyPI.
Supports dual-token resolution: tries PYPI_TOKEN first, falls back to TWINE_PASSWORD. When token_var is explicitly set in pipeline config, only that variable is consulted.
#template_dir
def template_dir(self) -> str | NoneReturn the PyPI CI templates directory.
#template_mappings
def template_mappings(self, ctx) -> list[dict[str, str]]Return publish workflow mappings, emitting launcher shims when configured.
#build_assets
def build_assets(self, dir_path: str, version: str, dist_dir: str, ctx) -> list[str]Build sdist and wheel into dist_dir.
#publish
def publish(self, dir_path: str, version: str, ctx) -> NonePublish to PyPI with dual-token resolution (PYPI_TOKEN or TWINE_PASSWORD).
#_publish_command
def _publish_command(self, dir_path: str, version: str, token: str) -> NoneRun uv build then uv publish with duplicate-version detection.
#required_env_vars
def required_env_vars(self) -> list[str]Return the primary token var (PYPI_TOKEN) or explicit config override.