[PyVigo] [Hola] + [PyCharm type hinting]

Artur Costa acosta en alicebiometrics.com
Mie Dic 9 09:59:48 CET 2020


Buenas,

Gracias por la respuesta David :)

Si, toda la razón, con lo que pongo parece que mando balones fuera para el
IDE, pero el IDE es el que precisamente nos avisa de que no podemos
resolver esa herencia doble.

La verdad es que no me acuerdo muy bien de cómo se comportaba en C++, pero
tenía la idea de que esa herencia doble sí que se resolvía (pero quizás los
IDEs de aquella no nos ayudaban tanto y me los comía con patatas los
warnings �� <https://emojipedia.org/person-shrugging/>)

Lo que propones del *Union* tiene buena pinta, pero para el caso de uso que
le vamos a dar (un dependency injection) creo que no nos vale. De todas
formas, le daré una vuelta.

Por otro lado, me comentaba Lucía que una buena idea era añadir un TypeVar
para ponerle un bound al tipo de retorno en repository_provider, o incluso
no tiparlo  (
https://github.com/acostapazo/typing-inheritance-example/blob/main/typing_inheritance.py#L68
).
Esa opción de no tiparla, ya la había planteado, pero quería saber si había
otras opciones.


Un saludo,
Artur



El mié, 9 dic 2020 a las 9:20, David Lorenzo (<davidl.eco en gmail.com>)
escribió:

> Hola,
>
> En mi opinión, el comportamiento que tiene el IDE me parece el correcto.
> La función create_random_user espera una instancia de IUserRepository (que
> hereda de IRepository), pero le estás entregando una instancia de
> IRepository. Como IUserRepository es quien hereda de IRepository, se puede
> esperar que IUserRepository incluya métodos u otras cosas que la clase base
> (IRepository) no contiene, de ahí el warning.
>
> Si fuese al revés (create_random_user espera instancia de la clase base
> IRepository y le entregas instancia de cualquier otra clase que hereda de
> IRepository) sí que no debería dar warning.
> Podrías crear un tipo con Union que incluya todas las clases que se le
> pueden entregar a la función como parámetro. Igual hay alguna otra solución
> que yo desconozca.
>
> Saludos.
>
>
> El mié, 9 dic 2020 a las 2:47, Artur Costa (<acosta en alicebiometrics.com>)
> escribió:
>
>> Hola,
>>
>> Primer mensaje a la lista, así que... encantado :)
>>
>> Disclaimer, si este no es el canal para compartir estas dudas y es mejor
>> el slack por ejemplo, disculpad.
>>
>> Bueno, al lío. Uso el PyCharm como IDE y desde hace un tiempo me muestra
>> un warning que mete un poco de ruido en los constructores semánticos con
>> los que trabajo.
>>
>> [image: pycharm_warning.png]
>>
>> Parece que es un tema de que PyCharm no es capaz de resolver una herencia
>> doble. He creado un snippet rápido en github como ejemplo
>>
>> https://github.com/acostapazo/typing-inheritance-example
>>
>> He buscado acerca del tema, pero quizás no estoy enfocando bien el tiro.
>> Entiendo que es una limitación del IDE, pero no lo tengo claro. ¿Alguna
>> recomendación de por dónde tirar? ¿Desactivo ese warning en PyCharm y me
>> voy a descansar?
>>
>> Un saludo,
>> Artur
>>
>> --
>>
>> Artur Costa Pazo
>>
>> Engineering Manager
>>
>> Ph. (+34) 986 120 430 Ext. 3020
>>
>> acosta en alicebiometrics.com  |  www.alicebiometrics.com
>>
>> Take care of the environment. Try not to print this email.
>>
>> The information contained in this email message may be confidential
>> information, and may also be the subject of legal professional privilege.
>> If you are not the intended recipient, any use, interference with,
>> disclosure or copying of this material is unauthorized and prohibited.
>> Please inform us immediately and destroy the email. Thank you for your
>> cooperation.
>> _______________________________________________
>> Asociación Python España: https://www.es.python.org/
>> Python Vigo: https://www.python-vigo.es/
>> Vigo mailing list
>> Vigo en lists.es.python.org
>> https://lists.es.python.org/listinfo/vigo
>>
>

-- 

Artur Costa Pazo

Engineering Manager

Ph. (+34) 986 120 430 Ext. 3020

acosta en alicebiometrics.com  |  www.alicebiometrics.com

Take care of the environment. Try not to print this email.

The information contained in this email message may be confidential
information, and may also be the subject of legal professional privilege.
If you are not the intended recipient, any use, interference with,
disclosure or copying of this material is unauthorized and prohibited.
Please inform us immediately and destroy the email. Thank you for your
cooperation.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://lists.es.python.org/pipermail/vigo/attachments/20201209/87e581fa/attachment-0001.htm>
------------ próxima parte ------------
Se ha borrado un mensaje adjunto que no está en formato texto plano...
Nombre     : pycharm_warning.png
Tipo       : image/png
Tamaño     : 122218 bytes
Descripción: no disponible
Url        : <https://lists.es.python.org/pipermail/vigo/attachments/20201209/87e581fa/attachment-0001.png>


Más información sobre la lista de distribución Vigo