laurigates/claude-plugins

python-packaging

Build and publish Python packages with uv.

Voir la source

Mode d’emploi

  1. Copiez la commande et examinez le paquet avant de l’installer dans votre environnement agent.
  2. Consultez le document original pour les outils, identifiants et environnements requis.
  3. Décrivez les entrées et le livrable souhaité ; comparez la sortie aux sources.
npx skills add https://github.com/laurigates/claude-plugins --skill python-packaging

Avant de commencer

  • L’installation n’inclut ni abonnement au modèle, ni quota API, ni accès aux fichiers.
  • Étoiles et installations reflètent l’activité, pas un test indépendant de qualité ou de sécurité.
Document Skill original

Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.

Python Packaging

Quick reference for building and publishing Python packages with UV and modern build tools.

When to Use This Skill

Use this skill when...Use uv-project-management instead when...
Building a wheel/sdist with uv build for PyPI distributionSetting up a new project's pyproject.toml or adding runtime dependencies
Publishing a release to PyPI or a private index with uv publishManaging the lockfile or syncing the local virtual environment
Configuring entry points, console scripts, or package metadata for distributionResolving dependency conflicts or pinning versions for development

When This Skill Applies

  • Building Python packages (wheels, sdists)
  • Publishing to PyPI or private indexes
  • Package versioning
  • Build system configuration
  • Editable installations

Quick Reference

Building Packages

bash
# Build package
uv build

# Build specific formats
uv build --wheel
uv build --sdist

# Output location: dist/

Publishing

bash
# Publish to PyPI
uv publish

# With token
uv publish --token $PYPI_TOKEN

# To Test PyPI
uv publish --publish-url https://test.pypi.org/legacy/

Package Structure

my-package/
├── pyproject.toml
├── README.md
├── LICENSE
├── src/
│   └── my_package/
│       ├── __init__.py
│       ├── __version__.py
│       └── main.py
└── tests/

pyproject.toml Configuration

toml
[project]
name = "my-package"
version = "0.1.0"
description = "A great package"
readme = "README.md"
requires-python = ">=3.11"
license = {text = "MIT"}
authors = [
    {name = "Your Name", email = "you@example.com"}
]
keywords = ["python", "package"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.11",
]

dependencies = [
    "requests>=2.31.0",
]

[project.optional-dependencies]
dev = ["pytest", "ruff", "ty"]

[project.urls]
Homepage = "https://github.com/user/my-package"
Documentation = "https://my-package.readthedocs.io"
Repository = "https://github.com/user/my-package.git"
Issues = "https://github.com/user/my-package/issues"

[project.scripts]
my-cli = "my_package.cli:main"

[build-system]
requires = ["uv_build>=0.9.2,<0.10.0"]
build-backend = "uv_build"

Versioning

toml
[project]
version = "0.1.0"  # Manual versioning

# Dynamic versioning (from git tags)
dynamic = ["version"]

[tool.uv]
version-provider = "git"

Entry Points

toml
[project.scripts]
my-cli = "my_package.cli:main"

[project.gui-scripts]
my-gui = "my_package.gui:main"

[project.entry-points."my_plugin"]
plugin1 = "my_package.plugins:plugin1"

Build Backends

UV Build (default)

toml
[build-system]
requires = ["uv_build>=0.9.2,<0.10.0"]
build-backend = "uv_build"

Setuptools

toml
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"

Hatchling

toml
[build-system]
requires = ["hatchling>=1.18"]
build-backend = "hatchling.build"

Common Workflows

Publish to PyPI

bash
# 1. Build
uv build

# 2. Check built packages
ls dist/

# 3. Publish
uv publish --token $PYPI_TOKEN

Test PyPI First

bash
# Publish to Test PyPI
uv publish --publish-url https://test.pypi.org/legacy/ \
           --token $TEST_PYPI_TOKEN

# Test installation
pip install --index-url https://test.pypi.org/simple/ my-package

Package Classifiers

Common classifiers:

toml
classifiers = [
    # Development Status
    "Development Status :: 3 - Alpha",
    "Development Status :: 4 - Beta",
    "Development Status :: 5 - Production/Stable",

    # Audience
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",

    # License
    "License :: OSI Approved :: MIT License",

    # Python Versions
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",

    # Framework
    "Framework :: Django",
    "Framework :: FastAPI",

    # Topic
    "Topic :: Software Development :: Libraries",
    "Topic :: Scientific/Engineering",
]

Full list: https://pypi.org/classifiers/

See Also

  • uv-project-management - Project setup and dependencies
  • python-development - Core Python patterns
  • uv-workspaces - Building workspace packages

References

  • UV build: https://docs.astral.sh/uv/guides/publish/
  • PyPI: https://pypi.org/
  • Detailed guide: See REFERENCE.md

Tâches connexes

du même dépôt

Autres Skills

Tous les Skills