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.2.0.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

flunt-2.2.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file flunt-2.2.0.tar.gz.

File metadata

  • Download URL: flunt-2.2.0.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.1 Linux/6.5.0-1015-azure

File hashes

Hashes for flunt-2.2.0.tar.gz
Algorithm Hash digest
SHA256 109c7288bed54880cc51c21371600f3ff1d524d3698c6e2d02e86ced0277198f
MD5 0d91b53bcc1ac83ca3571b6246cb7501
BLAKE2b-256 d65111888803863ac61f65a38497b3c8d844d8700ec75dd3abbece80ef4ff802

See more details on using hashes here.

Provenance

File details

Details for the file flunt-2.2.0-py3-none-any.whl.

File metadata

  • Download URL: flunt-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.1 Linux/6.5.0-1015-azure

File hashes

Hashes for flunt-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2415e257ab468338037979b85349d4e5526782ebe755cad68f991e7016629e27
MD5 6ca9d63dccd5d4bbbfbc8c49befc1b53
BLAKE2b-256 39a40525b0a8bee6aab2d52c2cf32b0a00207156e48518fd2c4f68b6d961652f

See more details on using hashes here.

Provenance

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