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
def detect_python_package_root(project_dir: str) -> str | NoneReturn the package root (e.g., 'src/orxt') from hatch config or filesystem.
Detection order:
- Hatch
[tool.hatch.build.targets.wheel].packagesin pyproject.toml - uv build-backend
[tool.uv.build-backend].module-rootin pyproject.toml - Filesystem:
src/{underscored}/directory - Filesystem:
{underscored}/directory (flat layout) - 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
def normalize_npm(name)Normalize an npm package name for similarity comparison.
Strips hyphens, underscores, dots, and lowercases.
#normalize_pypi
def normalize_pypi(name)Normalize a PyPI package name per PEP 503.
Lowercases and replaces runs of [-_.] with a single hyphen.
#normalize_go
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
def _get_git_author() -> strReturn the git config user.name, or empty string on failure.