Skip to main content

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)

Último Lançamento no PyPI python Downloads License: MIT Discord

Avaliação de Segurança Avaliação de Confiabilidade Avaliação de Manutenibilidade Bugs Vulnerabilidades Code 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

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


Download files

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

Source Distribution

flunt-2.3.0.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

flunt-2.3.0-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

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

Hashes for flunt-2.3.0.tar.gz
Algorithm Hash digest
SHA256 012acc74fdc973b146fe0d4986742de0917a1fddcbfda4ce397a38794586d4e3
MD5 763bfde871caa91ebb4e32b145fe5d2d
BLAKE2b-256 8bd6910a7281adc5bc17e4d07d8ac8f0617b2131ed61539288dff31a152c09e9

See more details on using hashes here.

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

Hashes for flunt-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f1e61b41cc02256d60566684b5c5ccccf7f26fdb0f05e125e128a96bc6fca1d4
MD5 5a785c988d7f522f49969717803018f1
BLAKE2b-256 cb0efcf2826eac4954231ba70b699afbb54971c55f87419b3fbc646b9ed30477

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page