Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Python implementation of Domain Notification Pattern

NotificationsYou must be signed in to change notification settings

fazedordecodigo/PyFlunt

Repository files navigation

PORTUGUÊS |ENGLISH

🐍 PyFlunt: Domain Notification Pattern

Implementação Python inspirada noFlunt (.NET)

Último Lançamento no PyPIpythonDownloadsLicense: MITDiscord

Avaliação de SegurançaAvaliação de ConfiabilidadeAvaliação de ManutenibilidadeBugsVulnerabilidadesCode Smells

Flunt te auxilia a implementar Domain Notification Pattern em sua aplicação para centralizar erros e mudanças em determinadas ações e entidades.

Flunt surgiu de duas necessidades: implementar o Domain Notification Pattern para substituir exceções no nível de domínio da aplicação e reduzir a quantidade de IFs (complexidade) usando uma abordagem baseada em contratos.

Assim, basicamente o que o Flunt faz é adicionar uma lista de Notificações à sua classe e vários métodos para interagir com ela.

➡️ Como usar

🔧 Instalação

pip install flunt

🔔 Notifiable

ONotifiable é a classe base que fornece funcionalidades para armazenar e gerenciar notificações:

fromflunt.notifications.notifiableimportNotifiableclassNome(Notifiable):def__init__(self,nome):super().__init__()iflen(nome)<3:self.add_notification(field='nome',message='Nome deve ter pelo menos 3 caracteres')self._nome=nome

📜 Contract

OContract fornece métodos para validações encadeadas:

"""Módulo de exemplo com Objetos de Valor."""fromflunt.notifications.notifiableimportNotifiablefromflunt.validations.contractimportContractclassPessoa(Notifiable):"""Classe Objeto de Valor Pessoa."""def__init__(self,primeiro_nome,ultimo_nome,email):"""Construtor da classe."""super().__init__()self.primeiro_nome=primeiro_nomeself.ultimo_nome=ultimo_nomeself.email=email# Criando um contrato de validaçãocontract= (Contract()            .requires(self.primeiro_nome,"primeiro nome","Nome é obrigatório")            .requires(self.ultimo_nome,"ultimo nome","Sobrenome é obrigatório")            .requires(self.email,"email","E-mail é obrigatório")            .is_lower_than(self.primeiro_nome,3,"primeiro_nome","Nome deve ter no mínimo 3 caracteres",            )            .is_lower_than(self.ultimo_nome,3,"ultimo_nome","Sobrenome deve ter no mínimo 3 caracteres",            )            .is_email(self.email,"email","E-mail inválido")        )# Adicionando as notificações do contrato à entidadeself.add_notifications(contract.get_notifications())# Exemplo de usopessoa=Pessoa("Alfredo","Biscoito","alfredo@biscoito.com")ifnotpessoa.is_valid:fornotificationinpessoa.get_notifications():print(notification)else:print("Validado com sucesso!")

Contribuindo

Consulte nosso DevGuide no link a seguir:CONTRIBUTING

Registro de Alterações

Consulte nosso registro de alterações no link a seguir:CHANGELOG

📄 Licença

Este projeto contém a licença MIT. Consulte o arquivoLICENSE.

Mods


[8]ページ先頭

©2009-2025 Movatter.jp