Skip to main content

Gerenciador de pacotes e projetos para o ecossistema PyReact

Project description

PRPM

O package manager do ecossistema PyReact.

CI PyPI Python License: MIT 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.toml padrão como manifesto;
  • resolve pacotes no PyPI (incluindo pyreact-framework);
  • cria uma .venv isolada automaticamente;
  • gera prpm.lock com 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


Download files

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

Source Distribution

prpm-0.3.0.tar.gz (44.4 kB view details)

Uploaded Source

Built Distribution

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

prpm-0.3.0-py3-none-any.whl (45.9 kB view details)

Uploaded Python 3

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

Hashes for prpm-0.3.0.tar.gz
Algorithm Hash digest
SHA256 c9b71da0195bb020b24e93b2692f6fd0f39808d148641dc35a74bd001545e1e3
MD5 36cfbda95003e9366ee448d4787d48a2
BLAKE2b-256 7b47633b04c461e622ac12c7dda69c972bdcdcdfca5c6b14db9e8f95fd60c58c

See more details on using hashes here.

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

Hashes for prpm-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5df95113b38a125e7635fb7f51e2a8792c412ff37936a8873453c173b8a086f5
MD5 621f81036b865d9215c4336e270aa8ab
BLAKE2b-256 d585fb07a202275b885b3c1b22f10ef21acc1e355ad501ac662cf102fa38b0f5

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