Skip to main content

Python bytecode compiler and PyPI publishing toolkit for monorepos

Project description

sage-pypi-publisher

A tiny toolkit to compile Python packages to bytecode, build wheels, and publish to PyPI/TestPyPI. Extracted from SAGE's internal sage-dev tooling and made standalone.

Features

  • Copy a package tree and compile .py.pyc (keeps __init__.py and _version.py).
  • Auto-adjust pyproject.toml / MANIFEST.in to include compiled artifacts and binary extensions.
  • Build wheels with python -m build.
  • Upload via twine (with --dry-run by default).
  • Simple Typer-based CLI.

Installation

pip install .
# or
pip install sage-pypi-publisher

CLI

sage-pypi-publisher --help

# Compile only
sage-pypi-publisher compile /path/to/pkg -o /tmp/out

# Compile + build
sage-pypi-publisher build /path/to/pkg -o /tmp/out

# Compile + build + upload to TestPyPI
sage-pypi-publisher build /path/to/pkg -o /tmp/out -u -r testpypi --no-dry-run

# Upload an existing wheel
sage-pypi-publisher upload dist/yourpkg-0.1.0-py3-none-any.whl -r pypi --no-dry-run

Python API

from pathlib import Path
from pypi_publisher.compiler import BytecodeCompiler

compiler = BytecodeCompiler(Path("/path/to/pkg"))
compiled = compiler.compile_package()
wheel = compiler.build_wheel(compiled)
compiler.upload_wheel(wheel, repository="testpypi", dry_run=True)

Notes

  • Requires python -m build and twine available.
  • No backward compatibility with sage-dev CLI; PyPI commands have been removed from SAGE.
  • Designed to be monorepo-friendly but works with any package path that contains pyproject.toml.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sage_pypi_publisher-0.1.5.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sage_pypi_publisher-0.1.5-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

Details for the file sage_pypi_publisher-0.1.5.tar.gz.

File metadata

  • Download URL: sage_pypi_publisher-0.1.5.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for sage_pypi_publisher-0.1.5.tar.gz
Algorithm Hash digest
SHA256 0591479dccff98c8df55589789c603103de706771a83e8010275d2b2f4e123af
MD5 592ef0e9aa0e6cd5da7d629839a17ebe
BLAKE2b-256 ab4ea776461b16589f744e1675b0d5427789bafac63bfb6b102720e0249d1d2d

See more details on using hashes here.

File details

Details for the file sage_pypi_publisher-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for sage_pypi_publisher-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d029f910b211b28616cc3e073c48a0f7cb6b669ba325a025ce8ebe7c19fa40bc
MD5 74c166753948cc61712bac8169e50ad8
BLAKE2b-256 e3fba7cb7b54ff2e76cc3c2334538adaf05c61dc90fd6ef7bd3e1866b81628bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page