rlsbl v0.92.0 /rlsbl.targets.utils
On this page

Shared name-normalization utilities for release targets, handling package name canonicalization across different registry naming conventions.

#rlsbl.targets.utils

#rlsbl.targets.utils

Shared name-normalization utilities for release targets, handling package name canonicalization across different registry naming conventions.

#detect_python_package_root

python
def detect_python_package_root(project_dir: str) -> str | None

Return the package root (e.g., 'src/orxt') from hatch config or filesystem.

Detection order:

  1. Hatch [tool.hatch.build.targets.wheel].packages in pyproject.toml
  2. uv build-backend [tool.uv.build-backend].module-root in pyproject.toml
  3. Filesystem: src/{underscored}/ directory
  4. Filesystem: {underscored}/ directory (flat layout)
  5. Filesystem: {raw_name}/ directory

Raises VersionError if both {underscored}/ and src/{underscored}/ exist on disk and no config (hatch or uv) declares the canonical location.

Returns the relative path from project_dir to the package root directory, or None if pyproject.toml is missing, the project name cannot be read, or no package directory exists on disk.

#normalize_npm

python
def normalize_npm(name)

Normalize an npm package name for similarity comparison.

Strips hyphens, underscores, dots, and lowercases.

#normalize_pypi

python
def normalize_pypi(name)

Normalize a PyPI package name per PEP 503.

Lowercases and replaces runs of [-_.] with a single hyphen.

#normalize_go

python
def normalize_go(name)

Normalize a Go module path to a short name.

Takes a module path like 'github.com/user/repo' and returns the last path segment lowercased (e.g., 'repo').

#_get_git_author

python
def _get_git_author() -> str

Return the git config user.name, or empty string on failure.