Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adicionar validação de UUID (GUID) #11

Closed
fazedordecodigo opened this issue May 21, 2023 · 3 comments
Closed

Adicionar validação de UUID (GUID) #11

fazedordecodigo opened this issue May 21, 2023 · 3 comments

Comments

@fazedordecodigo
Copy link
Owner

fazedordecodigo commented May 21, 2023

Nova Feature

  • Validações de UUID (GUID)

Baseando-se na feature dessa lib: https://github.com/andrebaltieri/Flunt/blob/main/Flunt/Validations/GuidValidationContract.cs

@fazedordecodigo fazedordecodigo added the 14 - Question Further information is requested label May 21, 2023
@fazedordecodigo fazedordecodigo self-assigned this May 21, 2023
@fazedordecodigo fazedordecodigo moved this to Todo in PyFlunt May 21, 2023
@fazedordecodigo fazedordecodigo moved this from Todo to In Progress in PyFlunt Feb 11, 2024
@fazedordecodigo fazedordecodigo added 01 - Enhancement New feature or request 11 - In progress 09 - Task and removed 14 - Question Further information is requested labels Feb 12, 2024
@fazedordecodigo fazedordecodigo moved this from In Progress to Proposal in PyFlunt Feb 13, 2024
@fazedordecodigo
Copy link
Owner Author

fazedordecodigo commented Feb 13, 2024

Métodos que serão adicionados:

  • are_equals(self, value, comparer, key, message):
  • are_not_equals(self, value, comparer, key, message):
  • is_empty(self, value, key, message):
  • is_not_empty(self, value, key, message)

@fazedordecodigo fazedordecodigo moved this from Proposal to In Progress in PyFlunt Feb 19, 2024
@fazedordecodigo fazedordecodigo moved this from In Progress to Proposal in PyFlunt Feb 21, 2024
@fazedordecodigo fazedordecodigo moved this from Proposal to In Progress in PyFlunt Feb 28, 2024
@fazedordecodigo
Copy link
Owner Author

fazedordecodigo commented Feb 29, 2024

are_equals(self, value, comparer, key, message):

Análise

Diferente do .NET Python não possui sobrecarga de métodos, assim ao herdar a nova classe UuidValidationContract o método de mesmo nome não é acessível.

Iniciei algumas discussões nos fóruns da comunidade Python com o seguinte comentário:

Galera, boa tarde! Existe alguma forma de trabalhar com sobrecarga de metodos no Python?

Exemplo:

class A:
   def metodo (a:  str):
        print(a)

class B:
    def metodo (a: number)
         print(a)

class AB(A, B):
   pass


metodo = AB()

metodo.metodo("teste")
metodo.metodo(1)

Se não, qual a forma pythonica de resolver este problema?

Após isso, nosso querido @dunossauro deu algumas orientações, entre elas a do comentário abaixo:

Então, esse esquema de multimethods ou dispatch em python não é uma coisa muito comum.

Pq usamos duck typing. Exatamente o oposto dessa filosofia.

Existem formas de contornar isso. Uma delas é usando o singledispatch, mas ele é single. Funciona pra um único argumento. Pra mais que isso, temos o multiple dispatch

https://pypi.org/project/multipledispatch/

Sigo com as pesquisas para a melhor implementação.

@fazedordecodigo
Copy link
Owner Author

Um bom artigo sobre Duck Typing -> Link

Method Flexibility Error Handling Complexity
Duck Typing High Requires careful handling Low to Moderate
Abstract Base Classes Moderate Clear interface, easy error handling Moderate to High
Explicit Type Checking Low Straightforward error handling Low

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant