Release PyFlunt v2.1.0

🐍 PyFlunt: Padrão de Notificação de Domínio

Registro de Alterações

Todas as alterações notáveis neste projeto serão documentadas neste arquivo.

O formato é baseado em Mantenha um Registro de Alterações, e este projeto adere ao Versionamento Semântico.

[Não Lançado]

  • Adicionar validação de GUID #11
  • Adicionar mensagens padronizadas em PT-BR e EN #18
  • Adicionar validação de DateTime #27
  • Adicionar validação de Números #28
  • Adicionar validação de documentos #29
  • Adicionar validação de Listas #30
  • Adicionar validação de Objetos #31
  • Adicionar validação de Regex #32
  • Adicionar validação de URL #33

[2.1.0] - 2024-02-24

Adicionado

  • CONTRIBUTING em PT-BR e EN #39
  • CODE_OF_CONDUCT em PT-BR e EN #40
  • README em PT-BR #41
  • CHANGELOG em PT-BR e EN #42
  • SECURITY em PT-BR e EN #43
  • FUNDING #44
  • Pull Request Template em PT-BR #45
  • Issue Template Bug Report em PT-BR #46
  • Issue Template Feature Report em PT-BR #47
  • Issue Template Vulnerability Report em PT-BR #48

Corrigido

  • Bug que impedia rodar no python v3.9 #36

🚀 Último Lançamento v2.1.0

O PyFlunt auxilia você a implementar o Padrão de Notificação de Domínio em sua aplicação, permitindo centralizar erros e mudanças em determinadas ações e entidades.

O Flunt surgiu para atender duas necessidades principais: substituir exceções no nível de domínio da aplicação e reduzir a quantidade de IFs, usando uma abordagem baseada em contratos.

Basicamente, o Flunt adiciona uma lista de Notificações à sua classe e oferece diversos métodos para interagir com ela.

➡️ Como usar

🔧 Instalação

pip install flunt

🔔 Notifiable

from flunt.notifiable import Notifiable
from flunt.notification import Notification

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.notifiable import Notifiable
from flunt.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)

🎉 Experimente o PyFlunt e contribua com este projeto open source! Junte-se à comunidade para melhorar e expandir esta biblioteca essencial para o desenvolvimento Python! 🚀