Fwd: A typing question

Paulo da Silva p_d_a_s_i_l_v_a_ns at nonetnoaddress.pt
Mon Oct 31 22:04:47 EDT 2022


Às 21:08 de 31/10/22, Peter J. Holzer escreveu:
> On 2022-10-30 11:26:56 +0100, Peter J. Holzer wrote:
>> On 2022-10-29 23:59:44 +0100, Paulo da Silva wrote:
>>> The funny thing is that if I replace foos by Foos it works because it gets
>>> known by the initial initialization :-) !
>>>
>>> ________________________
>>> from typing import List, Optional
>>>
>>> class GLOBALS:
>>>      Foos: Optional[Foos]=None
>> [...]
>>> class Foos:
>>
>> That seems like a bug to me.
> 
> But is it even true?
> 
> I just tried to reproduce it (should have done that before answering)
> with mypy 0.942 (included in Ubuntu 22.04 LTS):
> 
> ----[p1]---------------------------------------------------------------
> from typing import List, Optional
> 
> class GLOBALS:
>      foos: Optional[Foos]=None
> 
> class Foo:
> 
>      def __init__(self):
>          pass
> 
> class Foos:
>      Foos: List[Foo]=[]
>      # SOME GLOBALS ARE USED HERE
> 
>      def __init__(self):
>          pass
> 
> GLOBALS.foos=Foos()
> -----------------------------------------------------------------------
> 
> ----[p2]---------------------------------------------------------------
> from typing import List, Optional
> 
> class GLOBALS:
>      Foos: Optional[Foos]=None
> 
> class Foo:
> 
>      def __init__(self):
>          pass
> 
> class Foos:
>      Foos: List[Foo]=[]
>      # SOME GLOBALS ARE USED HERE
> 
>      def __init__(self):
>          pass
> 
> GLOBALS.Foos=Foos()
> -----------------------------------------------------------------------
> 
> --- p1  2022-10-31 21:59:49.639869922 +0100
> +++ p2  2022-10-31 21:58:19.815830677 +0100
> @@ -1,7 +1,7 @@
>   from typing import List, Optional
> 
>   class GLOBALS:
> -    foos: Optional[Foos]=None
> +    Foos: Optional[Foos]=None
> 
>   class Foo:
> 
> @@ -15,4 +15,4 @@
>       def __init__(self):
>           pass
> 
> -GLOBALS.foos=Foos()
> +GLOBALS.Foos=Foos()
> 
> So the only difference is the capitalization of foos. And mypy accepts
> both (as it probably should):
> 
> % mypy p1
> Success: no issues found in 1 source file
> % mypy p2
> Success: no issues found in 1 source file
> 
> 
> If you did something different, please explain what you did.

Yes for mypy.
Try to run them (python3 <your script name>).

Paulo




More information about the Python-list mailing list