Gerenciador de pacotes e projetos para o ecossistema PyReact
Project description
PRPM
O package manager do ecossistema PyReact.
Crie projetos, instale dependências isoladas, trave versões e execute scripts com uma única ferramenta.
Por que PRPM?
Projetos PyReact são projetos Python. O PRPM aproveita esse ecossistema em vez de criar um registro incompatível:
- usa o
pyproject.tomlpadrão como manifesto; - resolve pacotes no PyPI (incluindo
pyreact-framework); - cria uma
.venvisolada automaticamente; - gera
prpm.lockcom as versões resolvidas; - oferece uma experiência familiar para quem usa npm;
- continua compatível com
pip, build backends e editores Python.
Instalação
Requer Python 3.9 ou mais recente.
python -m pip install prpm
Para instalar diretamente a versão de desenvolvimento do GitHub:
python -m pip install git+https://github.com/wanbnn/prpm.git
Para desenvolver o próprio PRPM:
git clone https://github.com/wanbnn/prpm.git
cd prpm
python -m pip install -e ".[dev]"
Início rápido
Crie e prepare uma aplicação PyReact:
prpm create minha-app
cd minha-app
prpm run dev
O comando cria um dashboard SSR completo, estruturado em componentes PyReact,
instala pyreact-framework em .venv e grava o lockfile. O boilerplate inclui
servidor de desenvolvimento, API interativa, tema claro/escuro, build estático
e testes prontos.
Em um projeto existente, como o Agentic Flow:
git clone https://github.com/wanbnn/agenticflow.git
cd agenticflow
prpm install
prpm exec agentic-flow
O PRPM lê as dependências que já estão em [project].dependencies.
Comandos
| Comando | Descrição |
|---|---|
prpm create <nome> |
Cria e instala uma aplicação PyReact |
prpm init [-y] |
Inicializa um pyproject.toml |
prpm install / prpm i |
Resolve, instala e atualiza prpm.lock |
prpm install --frozen |
Instala exatamente o lockfile; ideal para CI |
prpm add <pacote> |
Instala e salva uma dependência |
prpm add -D <pacote> |
Instala e salva em dev |
prpm remove <pacote> |
Remove uma dependência |
prpm update [pacotes] |
Atualiza todas ou algumas dependências |
prpm list [--all] |
Lista dependências diretas ou todas |
prpm run [script] |
Lista ou executa scripts |
prpm exec <comando> |
Executa um binário dentro da .venv |
prpm test |
Atalho para o script test |
prpm info <pacote> |
Consulta metadados no PyPI |
prpm lock [--check] |
Gera ou verifica o lockfile |
prpm login / logout |
Guarda ou remove um token no keyring |
prpm whoami |
Mostra a credencial e chave ativas |
prpm key <ação> |
Gera, mostra ou rotaciona a chave Ed25519 |
prpm pack |
Constrói, valida e assina wheel/sdist |
prpm publish |
Empacota e publica no PyPI |
prpm verify <alvo> |
Verifica uma release local ou publicada |
prpm doctor |
Mostra o estado do ambiente |
Aliases disponíveis: i, rm, up e ls.
Dependências
Especificadores seguem o padrão Python:
prpm add httpx
prpm add "fastapi>=0.115,<1"
prpm add -D "pytest>=8"
prpm add "componente @ git+https://github.com/usuario/componente.git"
Quando nenhuma versão é informada, o PRPM salva a versão mínima resolvida, por
exemplo httpx>=0.28.1.
Scripts
Declare scripts no manifesto:
[tool.prpm.scripts]
dev = "pyreact dev"
build = "pyreact build"
test = "python -m pytest"
serve = ["python", "-m", "meu_app"]
Execute-os sem ativar manualmente a .venv:
prpm run build
prpm test -q
prpm exec python --version
Manifesto e lockfile
O manifesto continua sendo um pyproject.toml válido:
[project]
name = "minha-app"
version = "0.1.0"
requires-python = ">=3.9"
dependencies = ["pyreact-framework>=1.0.5"]
[project.optional-dependencies]
dev = ["pytest>=8"]
O prpm.lock deve ser versionado. Ele registra a versão exata de cada pacote,
a origem e os hashes fornecidos pelo índice. Em CI, use:
prpm install --frozen
prpm test
Se o manifesto e o lock divergirem, o modo congelado falha antes de instalar.
Publicando pacotes
O PRPM utiliza o PyPI como registry. Crie um token em https://pypi.org/manage/account/token/ e faça login:
prpm login
prpm whoami
O token é solicitado sem eco no terminal e armazenado pelo keyring do sistema (Credential Manager no Windows, Keychain no macOS e Secret Service no Linux). Ele nunca é escrito no projeto ou passado na linha de comando.
O primeiro login também cria uma identidade Ed25519:
prpm key show
prpm key rotate
Prepare uma release sem publicá-la:
prpm pack
prpm verify dist
O diretório dist/ passa a conter:
pacote-1.0.0-py3-none-any.whl
pacote-1.0.0.tar.gz
prpm-manifest.json
prpm-manifest.sig
prpm-manifest.json registra hashes SHA-256, tamanhos, dependências e a chave
pública. prpm-manifest.sig contém a assinatura Ed25519 do manifesto.
Publique com um único comando:
prpm publish
O comando reconstrói os artefatos, executa twine check, valida a assinatura,
publica wheel/sdist e consulta a API do PyPI para comparar os hashes remotos.
Para publicar uma release já empacotada:
prpm publish --no-build
Teste todo o fluxo sem fazer upload:
prpm publish --dry-run
TestPyPI também é suportado:
prpm login --repository testpypi
prpm publish --repository testpypi
Em CI, evite login interativo e use uma variável secreta:
PRPM_PYPI_TOKEN=pypi-... prpm publish
Se o ambiente não oferecer um keyring (comum em runners headless), o pack
gera uma chave Ed25519 efêmera para aquela release; a assinatura continua
verificável pelo manifesto, mas a chave não persiste para o próximo build.
No PowerShell:
$env:PRPM_PYPI_TOKEN = "pypi-..."
prpm publish
Verifique qualquer pacote publicado:
prpm verify prpm
prpm verify "prpm==0.3.0"
A verificação remota compara os arquivos com os SHA-256 publicados pela API do
PyPI e valida cada entrada do RECORD dentro do wheel. A assinatura PRPM local
prova que o manifesto e os artefatos continuam associados à mesma chave; nesta
fase, a autorização do mantenedor e do nome do pacote continua sendo fornecida
pelo próprio PyPI.
Desenvolvimento
python -m pip install -e ".[dev]"
python -m pytest
python -m prpm --help
Consulte CONTRIBUTING.md para o fluxo de contribuição.
Licença
MIT. Veja LICENSE.
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
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 prpm-0.3.0.tar.gz.
File metadata
- Download URL: prpm-0.3.0.tar.gz
- Upload date:
- Size: 44.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9b71da0195bb020b24e93b2692f6fd0f39808d148641dc35a74bd001545e1e3
|
|
| MD5 |
36cfbda95003e9366ee448d4787d48a2
|
|
| BLAKE2b-256 |
7b47633b04c461e622ac12c7dda69c972bdcdcdfca5c6b14db9e8f95fd60c58c
|
File details
Details for the file prpm-0.3.0-py3-none-any.whl.
File metadata
- Download URL: prpm-0.3.0-py3-none-any.whl
- Upload date:
- Size: 45.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5df95113b38a125e7635fb7f51e2a8792c412ff37936a8873453c173b8a086f5
|
|
| MD5 |
621f81036b865d9215c4336e270aa8ab
|
|
| BLAKE2b-256 |
d585fb07a202275b885b3c1b22f10ef21acc1e355ad501ac662cf102fa38b0f5
|