Python implementation of Domain Notification Pattern inspired by Flunt (.NET)
Project description
PORTUGUÊS | ENGLISH
🐍 PyFlunt: Domain Notification Pattern
Implementação Python inspirada no Flunt (.NET)
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
from flunt.notifications.notifiable import Notifiable
from flunt.validations.contract import Contract
class Nome(Notifiable):
def __init__(self, nome):
super().__init__()
if len(nome) > 3:
self.add_notification(
Notification(field='nome', message='nome inválido')
)
self._nome = nome
📜 Contract
"""Módulo Objetos de Valor."""
from flunt.notifications.notifiable import Notifiable
from flunt.validations.contract import Contract
class Nome(Notifiable):
"""Classe Objeto de Valor Nome."""
def __init__(self, primeiro_nome, ultimo_nome):
"""Encontrar 'Construtor'."""
super().__init__()
self.primeiro_nome = primeiro_nome
self.ultimo_nome = ultimo_nome
self.add_notifications(
Contract()
.requires(self.primeiro_nome, 'primeiro nome')
.requires(self.ultimo_nome, 'último nome')
.is_greater_than(
value=self.primeiro_nome,
comparer=3,
key="primeiro_nome",
message="Mínimo de 3 caracteres",
)
.is_greater_than(
value=self.ultimo_nome,
comparer=3,
key="ultimo_nome",
message="Mínimo de 3 caracteres",
)
.get_notifications()
)
nome = Nome('Emerson', 'Delatorre')
if not nome.is_valid():
for notification in nome.get_notifications():
print(notification)
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 arquivo LICENSE.
Mods
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
File details
Details for the file flunt-2.3.0.tar.gz
.
File metadata
- Download URL: flunt-2.3.0.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.1 Linux/6.5.0-1016-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 012acc74fdc973b146fe0d4986742de0917a1fddcbfda4ce397a38794586d4e3 |
|
MD5 | 763bfde871caa91ebb4e32b145fe5d2d |
|
BLAKE2b-256 | 8bd6910a7281adc5bc17e4d07d8ac8f0617b2131ed61539288dff31a152c09e9 |
File details
Details for the file flunt-2.3.0-py3-none-any.whl
.
File metadata
- Download URL: flunt-2.3.0-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.1 Linux/6.5.0-1016-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1e61b41cc02256d60566684b5c5ccccf7f26fdb0f05e125e128a96bc6fca1d4 |
|
MD5 | 5a785c988d7f522f49969717803018f1 |
|
BLAKE2b-256 | cb0efcf2826eac4954231ba70b699afbb54971c55f87419b3fbc646b9ed30477 |