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__.pyand_version.py). - Auto-adjust
pyproject.toml/MANIFEST.into include compiled artifacts and binary extensions. - Build wheels with
python -m build. - Upload via
twine(with--dry-runby 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 buildandtwineavailable. - No backward compatibility with
sage-devCLI; PyPI commands have been removed from SAGE. - Designed to be monorepo-friendly but works with any package path that contains
pyproject.toml.
Project details
Release history Release notifications | RSS feed
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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0591479dccff98c8df55589789c603103de706771a83e8010275d2b2f4e123af
|
|
| MD5 |
592ef0e9aa0e6cd5da7d629839a17ebe
|
|
| BLAKE2b-256 |
ab4ea776461b16589f744e1675b0d5427789bafac63bfb6b102720e0249d1d2d
|
File details
Details for the file sage_pypi_publisher-0.1.5-py3-none-any.whl.
File metadata
- Download URL: sage_pypi_publisher-0.1.5-py3-none-any.whl
- Upload date:
- Size: 18.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d029f910b211b28616cc3e073c48a0f7cb6b669ba325a025ce8ebe7c19fa40bc
|
|
| MD5 |
74c166753948cc61712bac8169e50ad8
|
|
| BLAKE2b-256 |
e3fba7cb7b54ff2e76cc3c2334538adaf05c61dc90fd6ef7bd3e1866b81628bb
|