Guia do Desenvolvedor de Pacotes Rayforge
O Rayforge usa um sistema de pacotes baseado em pluggy para permitir que desenvolvedores estendam funcionalidade, adicionem novos drivers de máquina, ou integrem lógica personalizada sem modificar o código base principal.
1. Início Rápido
A forma mais rápida de começar é usando o template oficial.
- Faça Fork ou Clone do rayforge-package-template.
- Renomeie o diretório e atualize os metadados.
2. Estrutura do Pacote
O PackageManager escaneia o diretório packages. Um pacote válido deve ser um
diretório contendo pelo menos dois arquivos:
rayforge_package.yaml(Metadados)- Um ponto de entrada Python (ex.:
package.py)
Layout do Diretório:
meu-pacote-rayforge/
├── rayforge_package.yaml <-- Manifesto Obrigatório
├── package.py <-- Ponto de entrada (lógica)
├── assets/ <-- Recursos opcionais
└── README.md
3. O Manifesto (rayforge_package.yaml)
Este arquivo diz ao Rayforge como carregar seu pacote.
# rayforge_package.yaml
# Identificador único para seu pacote
name: meu_pacote_personalizado
# Nome de exibição legível para humanos
display_name: "Meu Pacote Personalizado"
# String de versão
version: 0.1.0
# Descrição exibida na UI
description: "Adiciona suporte para o cortador a laser XYZ."
# Dependências (pacote e restrições de versão)
depends:
- rayforge>=0.27.0,~0.27
# O arquivo python a carregar (relativo à pasta do pacote)
entry_point: package.py
# Metadados do autor
author: Maria Silva
url: https://github.com/usuario/meu-pacote-personalizado
4. Escrevendo o Código do Pacote
O Rayforge usa hooks pluggy. Para conectar ao Rayforge, defina funções decoradas
com @pluggy.HookimplMarker("rayforge").
Boilerplate Básico (package.py)
import logging
import pluggy
from rayforge.context import RayforgeContext
# Define o marcador de implementação de hook
hookimpl = pluggy.HookimplMarker("rayforge")
logger = logging.getLogger(__name__)
@hookimpl
def rayforge_init(context: RayforgeContext):
"""
Chamado quando o Rayforge está totalmente inicializado.
Este é seu ponto de entrada principal para acessar gerenciadores.
"""
logger.info("Meu Pacote Personalizado foi iniciado!")
# Acesse sistemas principais via contexto
machine = context.machine
camera = context.camera_mgr
if machine:
logger.info(f"Pacote rodando na máquina: {machine.id}")
@hookimpl
def register_machines(machine_manager):
"""
Chamado durante a inicialização para registrar novos drivers de máquina.
"""
# from .meu_driver import MinhaNovaMaquina
# machine_manager.register("minha_nova_maquina", MinhaNovaMaquina)
pass
Hooks Disponíveis
Definidos em rayforge/core/hooks.py:
rayforge_init (context)
: Ponto de Entrada Principal. Chamado após configuração, câmera e hardware serem carregados.
Use isso para lógica, injeções de UI ou listeners.
register_machines (machine_manager)
: Chamado cedo no processo de inicialização. Use isso para registrar novas classes/drivers
de hardware.
5. Acessando Dados do Rayforge
O hook rayforge_init fornece o RayforgeContext. Através deste objeto,
você pode acessar:
context.machine: A instância da máquina atualmente ativa.context.config: Configurações globais.context.camera_mgr: Acesse feeds de câmera e ferramentas de visão computacional.context.material_mgr: Acesse a biblioteca de materiais.context.recipe_mgr: Acesse receitas de processamento.
6. Desenvolvimento e Testes
Para testar seu pacote localmente sem publicá-lo:
-
Localize seu Diretório de Configuração: O Rayforge usa
platformdirs.- Windows:
C:\Users\<Usuario>\AppData\Local\rayforge\rayforge\packages - macOS:
~/Library/Application Support/rayforge/packages - Linux:
~/.config/rayforge/packages(Verifique os logs na inicialização porConfig dir is ...)
- Windows:
-
Crie um link simbólico do seu pacote: Em vez de copiar arquivos repetidamente, crie um link simbólico da sua pasta de desenvolvimento para a pasta de pacotes do Rayforge.
Linux/macOS:
ln -s /caminho/para/meu-pacote-rayforge ~/.config/rayforge/packages/meu-pacote-rayforge -
Reinicie o Rayforge: A aplicação escaneia o diretório na inicialização. Verifique os logs do console para:
Loaded package: meu_pacote_personalizado
7. Publicação
Para compartilhar seu pacote com a comunidade:
- Hospede no Git: Envie seu código para um repositório Git público (GitHub, GitLab, etc.).
- Envie ao Registro:
- Vá para rayforge-registry.
- Faça fork do repositório.
- Adicione a URL Git e metadados do seu pacote à lista do registro.
- Envie um Pull Request.
Uma vez aceito, usuários podem instalar seu pacote diretamente via UI do Rayforge ou usando a URL Git.