[issue46014] functools.singledispatch does not support Union types
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +30343 pull_request: https://github.com/python/cpython/pull/32282 ___ Python tracker <https://bugs.python.org/issue46014> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue46644] typing: remove callable() check from typing._type_check
Change by Yurii Karabas <1998uri...@gmail.com>: -- nosy: +uriyyo nosy_count: 8.0 -> 9.0 pull_requests: +29939 pull_request: https://github.com/python/cpython/pull/27553 ___ Python tracker <https://bugs.python.org/issue46644> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue46014] functools.singledispatch does not support Union types
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 4.0 -> 5.0 pull_requests: +28241 stage: -> patch review pull_request: https://github.com/python/cpython/pull/30017 ___ Python tracker <https://bugs.python.org/issue46014> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44807] typing.Protocol silently overrides __init__ method of delivered class
Yurii Karabas <1998uri...@gmail.com> added the comment: Łukasz this issue is my original finding. I have found this case when I was working on another issue that was related to `typing.Protocol`. I agree that we can leave it as it is for now because I didn't find any information from python community about this case. -- ___ Python tracker <https://bugs.python.org/issue44807> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue45167] deepcopy of GenericAlias with __deepcopy__ method is broken
Change by Yurii Karabas <1998uri...@gmail.com>: -- versions: +Python 3.10, Python 3.11 ___ Python tracker <https://bugs.python.org/issue45167> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue45167] deepcopy of GenericAlias with __deepcopy__ method is broken
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 1.0 -> 2.0 pull_requests: +26720 stage: -> patch review pull_request: https://github.com/python/cpython/pull/28306 ___ Python tracker <https://bugs.python.org/issue45167> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue45121] Regression in 3.9.7 with typing.Protocol
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 3.0 -> 4.0 pull_requests: +26630 stage: -> patch review pull_request: https://github.com/python/cpython/pull/28206 ___ Python tracker <https://bugs.python.org/issue45121> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue45081] dataclasses that inherit from Protocol subclasses have wrong __init__
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 4.0 -> 5.0 pull_requests: +26562 stage: -> patch review pull_request: https://github.com/python/cpython/pull/28121 ___ Python tracker <https://bugs.python.org/issue45081> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue45064] Raising AttributeError in descriptor decorator causing searching attribute in __mro__
Yurii Karabas <1998uri...@gmail.com> added the comment: Hi Mateusz, It's not a bug, it's expected behavior. __getattr__ called when the default attribute access fails with an AttributeError (either __getattribute__() raises an AttributeError because name is not an instance attribute or an attribute in the class tree for self; or __get__() of a name property raises AttributeError). You can find more information here: https://docs.python.org/3/reference/datamodel.html?highlight=__getattr__#object.__getattr__ -- nosy: +uriyyo resolution: -> not a bug stage: -> resolved status: open -> closed ___ Python tracker <https://bugs.python.org/issue45064> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44919] TypedDict subtypes ignore any other metaclasses in 3.9+
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 1.0 -> 2.0 pull_requests: +26501 stage: -> patch review pull_request: https://github.com/python/cpython/pull/28057 ___ Python tracker <https://bugs.python.org/issue44919> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44524] __name__ attribute in typing module
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +26195 stage: resolved -> patch review pull_request: https://github.com/python/cpython/pull/27710 ___ Python tracker <https://bugs.python.org/issue44524> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44806] Subclassing Protocol get different __init__
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +26068 pull_request: https://github.com/python/cpython/pull/27543 ___ Python tracker <https://bugs.python.org/issue44806> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue34422] __name__ not available for classes in typing module
Yurii Karabas <1998uri...@gmail.com> added the comment: I believe we can close this issue. It has been fixed in scope of this issue - https://bugs.python.org/issue44524 -- nosy: +uriyyo ___ Python tracker <https://bugs.python.org/issue34422> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44799] typing.get_type_hints() raises TypeError for a variable annotated by dataclasses.InitVar
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 1.0 -> 2.0 pull_requests: +26060 stage: -> patch review pull_request: https://github.com/python/cpython/pull/27553 ___ Python tracker <https://bugs.python.org/issue44799> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44807] typing.Protocol silently overrides __init__ method of delivered class
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +26052 stage: -> patch review pull_request: https://github.com/python/cpython/pull/27543 ___ Python tracker <https://bugs.python.org/issue44807> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44807] typing.Protocol silently overrides __init__ method of delivered class
New submission from Yurii Karabas <1998uri...@gmail.com>: typing.Protocol silently overrides __init__ method of delivered class. I think it should be forbidden to define __init__ method at Protocol delivered class in case if cls is not Protocol. -- components: Library (Lib) messages: 398742 nosy: kj, uriyyo priority: normal severity: normal status: open title: typing.Protocol silently overrides __init__ method of delivered class type: behavior versions: Python 3.11 ___ Python tracker <https://bugs.python.org/issue44807> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44806] Subclassing Protocol get different __init__
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +26050 stage: -> patch review pull_request: https://github.com/python/cpython/pull/27541 ___ Python tracker <https://bugs.python.org/issue44806> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44806] Subclassing Protocol get different __init__
New submission from Yurii Karabas <1998uri...@gmail.com>: When we subclassing Protocol, we get a __init__ differing from default one but the protocol in question didn't define any __init__. More information can be found here - https://github.com/python/typing/issues/644 -- components: Library (Lib) messages: 398736 nosy: kj, uriyyo priority: normal severity: normal status: open title: Subclassing Protocol get different __init__ type: behavior versions: Python 3.11 ___ Python tracker <https://bugs.python.org/issue44806> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44775] Speed-up typing.cast by implementing it in C
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +25993 stage: -> patch review pull_request: https://github.com/python/cpython/pull/27474 ___ Python tracker <https://bugs.python.org/issue44775> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44775] Speed-up typing.cast by implementing it in C
New submission from Yurii Karabas <1998uri...@gmail.com>: In scope of https://github.com/python/cpython/pull/27262 we have introduce `_typing` module with typing related helper functions. It will be great to speedup `typing.cast` function by implementing it in C. I have already done it and here is results: ``` import timeit import typing import _typing def _timeit(m): print(m.__name__, timeit.timeit("cast(int, 1)", globals={"cast": m.cast})) _timeit(typing) _timeit(_typing) ``` ``` typing 0.0702372890082188 _typing 0.033294505992671475 ``` -- components: Library (Lib) messages: 398529 nosy: kj, uriyyo priority: normal severity: normal status: open title: Speed-up typing.cast by implementing it in C type: enhancement ___ Python tracker <https://bugs.python.org/issue44775> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44761] NewType __module__ attr default value
Change by Yurii Karabas <1998uri...@gmail.com>: -- title: NewType __module__ name default value -> NewType __module__ attr default value ___ Python tracker <https://bugs.python.org/issue44761> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44761] NewType __module__ name default value
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +25939 stage: -> patch review pull_request: https://github.com/python/cpython/pull/27406 ___ Python tracker <https://bugs.python.org/issue44761> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44761] NewType __module__ name default value
Change by Yurii Karabas <1998uri...@gmail.com>: -- title: NewType __module__ name -> NewType __module__ name default value ___ Python tracker <https://bugs.python.org/issue44761> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44761] NewType __module__ name
New submission from Yurii Karabas <1998uri...@gmail.com>: This issue related to https://bugs.python.org/issue44353 By default `__module__` attribute of a `NewType` is set to "typing" but in other typing classes it set to "__main__". -- components: Library (Lib) messages: 398365 nosy: kj, uriyyo priority: normal severity: normal status: open title: NewType __module__ name type: behavior versions: Python 3.10, Python 3.11 ___ Python tracker <https://bugs.python.org/issue44761> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44747] Reduce usage of sys._getframe at typing module
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +25920 stage: -> patch review pull_request: https://github.com/python/cpython/pull/27387 ___ Python tracker <https://bugs.python.org/issue44747> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44747] Reduce usage of sys._getframe at typing module
New submission from Yurii Karabas <1998uri...@gmail.com>: While I was working with `typing` I have notice that there are duplication of `_getframe` usage. While In scope of issue 44353 I introduced `typing._callee` function which allow to return module name of a caller function. In scope of this issue we will reduce the usage of `_getframe` usage. It will be used only in one place, at `_callee` function. -- components: Library (Lib) messages: 398286 nosy: uriyyo priority: normal severity: normal status: open title: Reduce usage of sys._getframe at typing module type: enhancement versions: Python 3.11 ___ Python tracker <https://bugs.python.org/issue44747> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue34963] String representation for types created with typing.NewType(…) are opaque and unappealing
Yurii Karabas <1998uri...@gmail.com> added the comment: `NewType` was converted into callable class at scope of https://bugs.python.org/issue44353 Currently `repr` of `NewType` is: ``` >>> UserId = NewType("UserId", int) __main__.UserId ``` -- nosy: +uriyyo ___ Python tracker <https://bugs.python.org/issue34963> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44353] PEP 604 NewType
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +25849 stage: resolved -> patch review pull_request: https://github.com/python/cpython/pull/27305 ___ Python tracker <https://bugs.python.org/issue44353> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44353] PEP 604 NewType
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +25846 pull_request: https://github.com/python/cpython/pull/27302 ___ Python tracker <https://bugs.python.org/issue44353> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44353] PEP 604 NewType
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +25807 pull_request: https://github.com/python/cpython/pull/27262 ___ Python tracker <https://bugs.python.org/issue44353> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44353] PEP 604 NewType
Yurii Karabas <1998uri...@gmail.com> added the comment: Jelle thanks for pointing this out, I will implement helper function in C and use it as a __call__ method for NewType -- ___ Python tracker <https://bugs.python.org/issue44353> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44353] PEP 604 NewType
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +25804 pull_request: https://github.com/python/cpython/pull/27259 ___ Python tracker <https://bugs.python.org/issue44353> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44353] PEP 604 NewType
Yurii Karabas <1998uri...@gmail.com> added the comment: I opened PR with refactored `typing.NewType` into callable class. Also I have added `__module__` attr to typing.NewType so it will become pickable. -- ___ Python tracker <https://bugs.python.org/issue44353> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44353] PEP 604 NewType
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +25798 stage: -> patch review pull_request: https://github.com/python/cpython/pull/27250 ___ Python tracker <https://bugs.python.org/issue44353> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44353] PEP 604 NewType
Yurii Karabas <1998uri...@gmail.com> added the comment: @Ken thanks for pointing this out. The only solution which I see is to convert NewType into callable class but it will lead to performance degradation. @Ken what do you think about that? -- ___ Python tracker <https://bugs.python.org/issue44353> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44676] Add ability to serialise types.Union
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +25792 stage: -> patch review pull_request: https://github.com/python/cpython/pull/27244 ___ Python tracker <https://bugs.python.org/issue44676> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44676] Add ability to serialise types.Union
Change by Yurii Karabas <1998uri...@gmail.com>: -- type: -> enhancement ___ Python tracker <https://bugs.python.org/issue44676> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44662] Add ability to annotate types.Union
Change by Yurii Karabas <1998uri...@gmail.com>: -- title: Add ability to serialise and annotate types.Union -> Add ability to annotate types.Union ___ Python tracker <https://bugs.python.org/issue44662> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44676] Add ability to serialise types.Union
Change by Yurii Karabas <1998uri...@gmail.com>: -- versions: +Python 3.11 ___ Python tracker <https://bugs.python.org/issue44676> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44676] Add ability to serialise types.Union
New submission from Yurii Karabas <1998uri...@gmail.com>: It was discussed at https://bugs.python.org/issue44490 -- messages: 397814 nosy: uriyyo priority: normal severity: normal status: open title: Add ability to serialise types.Union ___ Python tracker <https://bugs.python.org/issue44676> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44524] __name__ attribute in typing module
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 5.0 -> 6.0 pull_requests: +25786 stage: -> patch review pull_request: https://github.com/python/cpython/pull/27237 ___ Python tracker <https://bugs.python.org/issue44524> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44633] Indexing the union type can return NotImplemented
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +25756 pull_request: https://github.com/python/cpython/pull/26980 ___ Python tracker <https://bugs.python.org/issue44633> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44653] Parameter substitution in the union type does not work with typing.Union
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +25757 pull_request: https://github.com/python/cpython/pull/26980 ___ Python tracker <https://bugs.python.org/issue44653> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44662] Add ability to serialise and annotate types.Union
Change by Yurii Karabas <1998uri...@gmail.com>: -- title: Add ability to serialise and annotated types.Union -> Add ability to serialise and annotate types.Union ___ Python tracker <https://bugs.python.org/issue44662> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44662] Add ability to serialise and annotated types.Union
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +25754 stage: -> patch review pull_request: https://github.com/python/cpython/pull/27214 ___ Python tracker <https://bugs.python.org/issue44662> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44662] Add ability to serialise and annotated types.Union
New submission from Yurii Karabas <1998uri...@gmail.com>: It was discussed at https://bugs.python.org/issue44490 -- messages: 397720 nosy: uriyyo priority: normal severity: normal status: open title: Add ability to serialise and annotated types.Union type: enhancement versions: Python 3.11 ___ Python tracker <https://bugs.python.org/issue44662> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44490] PEP 604 Union (int | str) doesn't have __parameters__
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +25753 pull_request: https://github.com/python/cpython/pull/27215 ___ Python tracker <https://bugs.python.org/issue44490> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44490] PEP 604 Union (int | str) doesn't have __parameters__
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +25752 pull_request: https://github.com/python/cpython/pull/27214 ___ Python tracker <https://bugs.python.org/issue44490> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44633] Indexing the union type can return NotImplemented
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 3.0 -> 4.0 pull_requests: +25744 stage: -> patch review pull_request: https://github.com/python/cpython/pull/26980 ___ Python tracker <https://bugs.python.org/issue44633> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44653] Parameter substitution in the union type does not work with typing.Union
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 3.0 -> 4.0 pull_requests: +25745 stage: -> patch review pull_request: https://github.com/python/cpython/pull/26980 ___ Python tracker <https://bugs.python.org/issue44653> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44353] PEP 604 NewType
Yurii Karabas <1998uri...@gmail.com> added the comment: Jelle I can try to implement it in C to see if it will give better performance. -- ___ Python tracker <https://bugs.python.org/issue44353> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44490] PEP 604 Union (int | str) doesn't have __parameters__
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +25604 pull_request: https://github.com/python/cpython/pull/27048 ___ Python tracker <https://bugs.python.org/issue44490> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44490] PEP 604 Union (int | str) doesn't have __parameters__
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +25542 stage: -> patch review pull_request: https://github.com/python/cpython/pull/26980 ___ Python tracker <https://bugs.python.org/issue44490> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44490] PEP 604 Union (int | str) doesn't have __parameters__
Yurii Karabas <1998uri...@gmail.com> added the comment: @Ken I will pick up this issue, thanks for asking. -- ___ Python tracker <https://bugs.python.org/issue44490> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44490] PEP 604 Union (int | str) doesn't have __parameters__
Yurii Karabas <1998uri...@gmail.com> added the comment: Should `__getitem__` be implemented for `types.Union`? I can implement it if no one is working on it. P.S. mypy currently does not support it: ``` Value of type "types.Union" is not indexable ``` -- nosy: +uriyyo ___ Python tracker <https://bugs.python.org/issue44490> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue44353] PEP 604 NewType
Yurii Karabas <1998uri...@gmail.com> added the comment: What about to return callable object instead of function from a `typing.NewType`? It will look something like this: ``` class _NewType: __slots__ = ('__name__', '__supertype__') def __init__(self, name, supertype): self.__name__ = name self.__supertype__ = supertype def __call__(self, val): return val def __or__(self, other): return Union[self, other] def __ror__(self, other): return Union[other, self] def NewType(name, tp): """NewType creates simple unique types with almost zero runtime overhead. NewType(name, tp) is considered a subtype of tp by static type checkers. At runtime, NewType(name, tp) returns a dummy callable object that simply returns its argument. Usage:: UserId = NewType('UserId', int) def name_by_id(user_id: UserId) -> str: ... UserId('user') # Fails type check name_by_id(42) # Fails type check name_by_id(UserId(42)) # OK num = UserId(5) + 1 # type: int """ return _NewType(name, tp) ``` With such implementation `__or__` will be available for a NewType and actually because of __slots__ size of object will be 48 bytes (with sys.getsizeof) which is less than current 144 bytes (if memory is important). -- nosy: +uriyyo ___ Python tracker <https://bugs.python.org/issue44353> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue38908] Troubles with @runtime_checkable protocols
Yurii Karabas <1998uri...@gmail.com> added the comment: Please forget my previous msg, this bug still present at 3.11 version. PR contains fix proposed by Kevin. Sorry for making to much noise. -- ___ Python tracker <https://bugs.python.org/issue38908> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue38908] Troubles with @runtime_checkable protocols
Yurii Karabas <1998uri...@gmail.com> added the comment: I checked and this bug is not present at 3.11 version. So I simply added test to cover case mentioned by Ivan. -- ___ Python tracker <https://bugs.python.org/issue38908> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue38908] Troubles with @runtime_checkable protocols
Yurii Karabas <1998uri...@gmail.com> added the comment: Hi Guido, I decided to help with this issue as far as Kevin did not respond. -- ___ Python tracker <https://bugs.python.org/issue38908> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue38908] Troubles with @runtime_checkable protocols
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 3.0 -> 4.0 pull_requests: +24708 stage: -> patch review pull_request: https://github.com/python/cpython/pull/26067 ___ Python tracker <https://bugs.python.org/issue38908> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue43243] Strict ABC classes
Yurii Karabas <1998uri...@gmail.com> added the comment: Sorry about this, in a future I will use forum for such discussions. -- ___ Python tracker <https://bugs.python.org/issue43243> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue43243] Strict ABC classes
Yurii Karabas <1998uri...@gmail.com> added the comment: When I work with ABC classes usually I faced a problem - I forget to implement one of the methods or make a typo in the method name. In such case I will know about it only when I will try to instantiate a class. In case when a hierarchy is big you should go through classes and find the exact class where the problem is. With this feature, in a case when a class inherits from strict ABC and doesn't implement all abstract methods of strict classes it will fail at class declaration rather than at instance creation as with regular ABC classes. As an option, I can run mypy every time before start the python interpreter. The perfect behavior for me is a case when ABC class will be strict by default, but it will break the existing code. Examples to explain the idea: ``` from abc import ABC, abstractmethod class Base(ABC): @abstraabstractmethod def foo(self): pass class A(Base, ABC): # totally okay, because class directly inherits from ABC pass class B(Base): # will fail, because class doesn't implement foo method pass ``` Raymond, could you please explain why the current behavior is default. -- ___ Python tracker <https://bugs.python.org/issue43243> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue43243] Strict ABC classes
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +23339 stage: -> patch review pull_request: https://github.com/python/cpython/pull/24558 ___ Python tracker <https://bugs.python.org/issue43243> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue43243] Strict ABC classes
New submission from Yurii Karabas <1998uri...@gmail.com>: Basically, the idea is to add the ability to mark abstract classes as strict. What does this mean - in case when a class inherits from a strict abstract base class and doesn't implement all abstract methods then it will fail to create a class. For instance: >>> class Iterable(ABC, strict=True): ... @abstractmethod ... def __iter__(self): ... pass >>> class MyClass(Iterable): ... pass TypeError: Can't create class MyClass with unimplemented strict abstract method __iter__ That allows creating abc classes and be sure that class defines a required method, it will be perfrormed on a class declaration stage rather than class instance creation. -- components: Library (Lib) messages: 387169 nosy: uriyyo priority: normal severity: normal status: open title: Strict ABC classes type: enhancement versions: Python 3.10 ___ Python tracker <https://bugs.python.org/issue43243> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue43085] Loosening | and |= operator type checking restriction
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +23228 stage: -> patch review pull_request: https://github.com/python/cpython/pull/24413 ___ Python tracker <https://bugs.python.org/issue43085> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue43085] Loosening | and |= operator type checking restriction
Yurii Karabas <1998uri...@gmail.com> added the comment: Hi Raymond, I was trying to add __or__ method for collections.abc.Mapping, __ior__ method for collections.abc.MutableMapping, link to issue - https://bugs.python.org/issue42841. I can extract code and move it to separate classes as you propose above. What do you think about that? -- nosy: +uriyyo ___ Python tracker <https://bugs.python.org/issue43085> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42269] Add ability to set __slots__ in dataclasses
Yurii Karabas <1998uri...@gmail.com> added the comment: Hi Eric, I tried to help you with this feature and have opened a PR. I thought that you are too busy to implement this feature, so that's why I decided to help you (It almost two months since your last message in this thread). -- ___ Python tracker <https://bugs.python.org/issue42269> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42269] Add ability to set __slots__ in dataclasses
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 5.0 -> 6.0 pull_requests: +22998 stage: -> patch review pull_request: https://github.com/python/cpython/pull/24171 ___ Python tracker <https://bugs.python.org/issue42269> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42841] Add bitwise or operator to collections.abc Mapping and MutableMapping
Yurii Karabas <1998uri...@gmail.com> added the comment: Thanks, for the replies, didn't know about that. Interesting thing that `collections.abc.Set` base class has implementations of `__and__`, `__or__`, `__sub__` and `__xor__` methods, it also provide `_from_iterable` class method that is used to create `Set` instance from iterable (all of those operators use this method). ``` class Set(Collection): ... @classmethod def _from_iterable(cls, it): '''Construct an instance of the class from any iterable input. Must override this method if the class constructor signature does not accept an iterable for an input. ''' return cls(it) ``` Basically, my proposition was to do smth similar to `collections.abc.Mapping`, but I understand your motivation not to implement this feature. -- ___ Python tracker <https://bugs.python.org/issue42841> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42841] Add bitwise or operator to collections.abc Mapping and MutableMapping
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +22970 stage: -> patch review pull_request: https://github.com/python/cpython/pull/24141 ___ Python tracker <https://bugs.python.org/issue42841> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42841] Add bitwise or operator to collections.abc Mapping and MutableMapping
Change by Yurii Karabas <1998uri...@gmail.com>: -- components: +Library (Lib) type: -> enhancement ___ Python tracker <https://bugs.python.org/issue42841> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42841] Add bitwise or operator to collections.abc Mapping and MutableMapping
New submission from Yurii Karabas <1998uri...@gmail.com>: In python3.9 `dict` `bitwise or` operator was introduced. I think it will be great if `collections.abc.Mapping` and `collections.abc.MutableMapping` will have a default implementation of `bitwise or` operator. -- messages: 384507 nosy: uriyyo priority: normal severity: normal status: open title: Add bitwise or operator to collections.abc Mapping and MutableMapping ___ Python tracker <https://bugs.python.org/issue42841> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42812] @overload-ing method of parent class without actual implementation
Yurii Karabas <1998uri...@gmail.com> added the comment: > What is better? Sorry, I can't answer this question. I am a regular python user and I just tried to help with your issue. I believe we should wait for someone from core team to answer this question. > In your example, does Child foo call Parent foo? Because the intent is to use > the parent's foo method. Sorry, I made a mistake, it definitely should call a parent method. A correct example will look like this: ``` class Parent: def foo(self, **kwargs): """Argument names of foo vary depending on the child class.""" class Child(Parent): def foo(self, a, b): super().foo(a=a, b=b) ``` But, the example above require more code to write, so a better option will be: ``` class Parent: def foo(self, **kwargs): """Argument names of foo vary depending on the child class.""" class Child(Parent): @overload def foo(self, a, b): pass @overload def foo(self, **kwargs): pass def foo(self, **kwargs): return super().foo(**kwargs) ``` I am not sure is it the perfect solution to solve your issue. Let's wait for someone from core team, so we can hear their opinion. -- ___ Python tracker <https://bugs.python.org/issue42812> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42812] @overload-ing method of parent class without actual implementation
Yurii Karabas <1998uri...@gmail.com> added the comment: I think the simplest solution in your case is not to use `@overload`, as far as I understand you want to override the signature of base method. This code won't produce any error when used with `mypy`: ``` class Parent: def foo(**kwargs): """Argument names of foo vary depending on the child class.""" class Child(Parent): def foo(self, a, b): pass `` -- ___ Python tracker <https://bugs.python.org/issue42812> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42812] @overload-ing method of parent class without actual implementation
Yurii Karabas <1998uri...@gmail.com> added the comment: `mypy` will produce an error on such code: ``` class Parent: def foo(self, **kwargs): """Argument names of foo vary depending on the child class.""" class Child(Parent): @overload def foo(self, a, b): pass def foo(self, **kwargs): return super().foo(**kwargs) ``` Result ``` temp.py:10: error: Single overload definition, multiple required temp.py:10: error: Signature of "foo" incompatible with supertype "Parent" Found 2 errors in 1 file (checked 1 source file) ``` In case if you want to add an overload for method I would recommend to use such pattern: ``` class Parent: def foo(self, **kwargs): """Argument names of foo vary depending on the child class.""" class Child(Parent): @overload def foo(self, a, b): pass @overload def foo(self, **kwargs): pass def foo(self, **kwargs): return super().foo(**kwargs) ``` So signature of `foo` will still match to parent class signature, but it will also have an overloaded variant. -- ___ Python tracker <https://bugs.python.org/issue42812> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42812] @overload-ing method of parent class without actual implementation
Yurii Karabas <1998uri...@gmail.com> added the comment: The purpose of `@overload` is quite different. I believe you thought that this is smth like `@override` in Java world but it different. Basically, the correct usage of `@overaload` is: ``` @overload def process(response: None) -> None: ... @overload def process(response: int) -> tuple[int, str]: ... @overload def process(response: bytes) -> str: ... def process(response): ``` Please, follow this link for more information https://docs.python.org/3/library/typing.html#typing.overload -- nosy: +uriyyo ___ Python tracker <https://bugs.python.org/issue42812> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42455] Add decorator_factory function to functools module
Yurii Karabas <1998uri...@gmail.com> added the comment: What we should do with this issue? There was no much discussion at python-ideas. I have received only one -1 opinion. -- ___ Python tracker <https://bugs.python.org/issue42455> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42815] new thread doesn't copy context of the parent thread
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +22907 stage: -> patch review pull_request: https://github.com/python/cpython/pull/24074 ___ Python tracker <https://bugs.python.org/issue42815> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42815] new thread doesn't copy context of the parent thread
New submission from Yurii Karabas <1998uri...@gmail.com>: New thread doesn't copy context of the parent thread. The minimal example to reproduce the issue: ``` from threading import Thread from contextvars import ContextVar foo: ContextVar[str] = ContextVar("foo") def temp(): print(foo.get()) foo.set("bar") t = Thread(target=temp) t.start() t.join() ``` Is it expected behavior? PEP 567 I didn't find anything regarding this case. -- components: Library (Lib) messages: 384262 nosy: uriyyo priority: normal severity: normal status: open title: new thread doesn't copy context of the parent thread type: behavior versions: Python 3.10 ___ Python tracker <https://bugs.python.org/issue42815> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue27794] setattr a read-only property; the AttributeError should show the attribute that failed
Yurii Karabas <1998uri...@gmail.com> added the comment: You a totally right, looks like I tried to add a feature that no one asked for:) I have updated PR and removed `name` parameter from `property` constuctor. Thanks for your advice. -- ___ Python tracker <https://bugs.python.org/issue27794> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue27794] setattr a read-only property; the AttributeError should show the attribute that failed
Yurii Karabas <1998uri...@gmail.com> added the comment: Raymond, it's a good question. I have added `name` to `property` constructor to support cases when a property is added to a class after it was declared. For instance: ``` class Foo: pass Foo.foo = property(name='foo') f = Foo() f.foo = 10 ``` So, in my opinion, it's expected behavior that `name` is overwritten by `__set_name__` method. What do you think about that? Should we change this behevior? -- ___ Python tracker <https://bugs.python.org/issue27794> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue27794] setattr a read-only property; the AttributeError should show the attribute that failed
Yurii Karabas <1998uri...@gmail.com> added the comment: I have implemented this feature using an idea provided by Xiang Zhang. Basically, property has new optional attribute `name` which will be added to msg of `AttributeError` in a case when `name` is set. -- ___ Python tracker <https://bugs.python.org/issue27794> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue27794] setattr a read-only property; the AttributeError should show the attribute that failed
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 8.0 -> 9.0 pull_requests: +22812 stage: needs patch -> patch review pull_request: https://github.com/python/cpython/pull/23967 ___ Python tracker <https://bugs.python.org/issue27794> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42525] Optimize class/module level annotation
Yurii Karabas <1998uri...@gmail.com> added the comment: After several attempts to optimize class/module annotations, I didn't find a solution that won't break existing code and can cover all existing edge cases. The root cause was mentioned by Inada, the problem that `__annotations__` is exposed to locals and can be dynamically modified and that can't be predicted at compilation time. Sorry about this issue, when I was creating this issue, I didn't realize the whole problem state. We can close this issue. -- ___ Python tracker <https://bugs.python.org/issue42525> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue41891] asyncio.wait_for does not wait for task/future to be completed in all cases
Yurii Karabas <1998uri...@gmail.com> added the comment: Yurii no worries, I am happy that this issue is resolved) -- nosy: +uriyyo ___ Python tracker <https://bugs.python.org/issue41891> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42600] Cancelling tasks waiting for asyncio.Conditions crashes w/ RuntimeError: Lock is not acquired.
Yurii Karabas <1998uri...@gmail.com> added the comment: Hey Yurii, I have fixed this issue. The actual problem was that `wait_for` cancels passed future but doesn't wait until it finished. -- ___ Python tracker <https://bugs.python.org/issue42600> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42600] Cancelling tasks waiting for asyncio.Conditions crashes w/ RuntimeError: Lock is not acquired.
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch nosy: +uriyyo nosy_count: 4.0 -> 5.0 pull_requests: +22689 stage: -> patch review pull_request: https://github.com/python/cpython/pull/23829 ___ Python tracker <https://bugs.python.org/issue42600> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42562] dis failed to parse function that has only annotations
Change by Yurii Karabas <1998uri...@gmail.com>: -- keywords: +patch pull_requests: +22501 stage: -> patch review pull_request: https://github.com/python/cpython/pull/23632 ___ Python tracker <https://bugs.python.org/issue42562> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42562] dis failed to parse function that has only annotations
New submission from Yurii Karabas <1998uri...@gmail.com>: `dis` module failed when trying to parse function that has only annotations at the function body: ``` def foo(): a: int ``` Failed with stacktrace: ``` 1 0 LOAD_CONST 0 () 2 LOAD_CONST 1 ('foo') 4 MAKE_FUNCTION0 6 STORE_NAME 0 (foo) 8 LOAD_CONST 2 (None) 10 RETURN_VALUE Disassembly of : Traceback (most recent call last): File "/Users/yuriikarabas/my-projects/temp-cpython/Lib/runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "/Users/yuriikarabas/my-projects/temp-cpython/Lib/runpy.py", line 87, in _run_code exec(code, run_globals) File "/Users/yuriikarabas/my-projects/temp-cpython/Lib/dis.py", line 536, in _test() File "/Users/yuriikarabas/my-projects/temp-cpython/Lib/dis.py", line 533, in _test dis(code) File "/Users/yuriikarabas/my-projects/temp-cpython/Lib/dis.py", line 79, in dis _disassemble_recursive(x, file=file, depth=depth) File "/Users/yuriikarabas/my-projects/temp-cpython/Lib/dis.py", line 381, in _disassemble_recursive _disassemble_recursive(x, file=file, depth=depth) File "/Users/yuriikarabas/my-projects/temp-cpython/Lib/dis.py", line 373, in _disassemble_recursive disassemble(co, file=file) File "/Users/yuriikarabas/my-projects/temp-cpython/Lib/dis.py", line 369, in disassemble _disassemble_bytes(co.co_code, lasti, co.co_varnames, co.co_names, File "/Users/yuriikarabas/my-projects/temp-cpython/Lib/dis.py", line 389, in _disassemble_bytes maxlineno = max(linestarts.values()) + line_offset ValueError: max() arg is an empty sequence ``` -- components: Library (Lib) messages: 382453 nosy: uriyyo priority: normal severity: normal status: open title: dis failed to parse function that has only annotations type: behavior versions: Python 3.10 ___ Python tracker <https://bugs.python.org/issue42562> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42525] Optimize class/module level annotation
Yurii Karabas <1998uri...@gmail.com> added the comment: As all annotations are known at compilation time we can optimize annotations creating. For instance, we have such code: ``` a: int b: int ``` With the current implementation, we will have such bytecode: ``` 1 0 SETUP_ANNOTATIONS 2 LOAD_CONST 0 ('int') 4 LOAD_NAME0 (__annotations__) 6 LOAD_CONST 1 ('a') 8 STORE_SUBSCR 2 10 LOAD_CONST 0 ('int') 12 LOAD_NAME0 (__annotations__) 14 LOAD_CONST 2 ('b') 16 STORE_SUBSCR 18 LOAD_CONST 3 (None) 20 RETURN_VALUE ``` I would suggest using `BUILD_CONST_KEY_MAP` and bytecode will look like this: ``` 2 0 LOAD_CONST 0 ('int') 3 2 LOAD_CONST 0 ('int') 1 4 LOAD_CONST 1 (('a', 'b')) 6 BUILD_CONST_KEY_MAP 2 8 SETUP_ANNOTATIONS 10 LOAD_CONST 2 (None) 12 RETURN_VALUE ``` So `SETUP_ANNOTATIONS` bytecode will accept a dictionary with annotations of a current module/class. I will look more like micro-optimization, I can implement this feature and run benchmarks to check performance boost. I believe this optimization won't require a lot to change. -- ___ Python tracker <https://bugs.python.org/issue42525> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42525] Optimize class/module level annotation
New submission from Yurii Karabas <1998uri...@gmail.com>: This issue is inspired by https://bugs.python.org/issue42202 We can do smth similar for class/module level annotations. Inada Naoki what do you think regarding that? -- components: Interpreter Core messages: 382263 nosy: methane, uriyyo priority: normal severity: normal status: open title: Optimize class/module level annotation type: resource usage versions: Python 3.10 ___ Python tracker <https://bugs.python.org/issue42525> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42455] Add decorator_factory function to functools module
Yurii Karabas <1998uri...@gmail.com> added the comment: I have posted this idea to python-ideas Link to thread https://mail.python.org/archives/list/python-id...@python.org/thread/OIRAB3QA4AAD3JGH2S5HMGCPDLGG7T52/ -- ___ Python tracker <https://bugs.python.org/issue42455> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42455] Add decorator_factory function to functools module
Yurii Karabas <1998uri...@gmail.com> added the comment: Let's wait for Nick. I have found great examples to show how decorator_factory can simplify things. dataclasses.dataclass ``` def dataclass(cls=None, /, *, init=True, repr=True, eq=True, order=False, unsafe_hash=False, frozen=False): def wrap(cls): return _process_class(cls, init, repr, eq, order, unsafe_hash, frozen) # See if we're being called as @dataclass or @dataclass(). if cls is None: # We're called with parens. return wrap # We're called as @dataclass without parens. return wrap(cls) ``` ``` @functools.decorator_factory def dataclass(cls, /, *, init=True, repr=True, eq=True, order=False, unsafe_hash=False, frozen=False): return _process_class(cls, init, repr, eq, order, unsafe_hash, frozen) ``` functools.lru_cache ``` def lru_cache(maxsize=128, typed=False): if isinstance(maxsize, int): # Negative maxsize is treated as 0 if maxsize < 0: maxsize = 0 elif callable(maxsize) and isinstance(typed, bool): # The user_function was passed in directly via the maxsize argument user_function, maxsize = maxsize, 128 wrapper = _lru_cache_wrapper(user_function, maxsize, typed, _CacheInfo) wrapper.cache_parameters = lambda : {'maxsize': maxsize, 'typed': typed} return update_wrapper(wrapper, user_function) elif maxsize is not None: raise TypeError( 'Expected first argument to be an integer, a callable, or None') def decorating_function(user_function): wrapper = _lru_cache_wrapper(user_function, maxsize, typed, _CacheInfo) wrapper.cache_parameters = lambda : {'maxsize': maxsize, 'typed': typed} return update_wrapper(wrapper, user_function) return decorating_function ``` ``` @decorator_factory def lru_cache(user_function, /, maxsize=128, typed=False): if isinstance(maxsize, int): # Negative maxsize is treated as 0 if maxsize < 0: maxsize = 0 elif maxsize is not None: raise TypeError( 'Expected first argument to be an integer, a callable, or None') wrapper = _lru_cache_wrapper(user_function, maxsize, typed, _CacheInfo) wrapper.cache_parameters = lambda : {'maxsize': maxsize, 'typed': typed} return update_wrapper(wrapper, user_function) ``` -- ___ Python tracker <https://bugs.python.org/issue42455> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42392] remove the deprecated 'loop' parameter asyncio API
Yurii Karabas <1998uri...@gmail.com> added the comment: Looks like we have done everything, we can close this issue -- ___ Python tracker <https://bugs.python.org/issue42392> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42455] Add decorator_factory function to functools module
Change by Yurii Karabas <1998uri...@gmail.com>: -- title: Add decorator_with_params function to functools module -> Add decorator_factory function to functools module ___ Python tracker <https://bugs.python.org/issue42455> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42455] Add decorator_with_params function to functools module
Yurii Karabas <1998uri...@gmail.com> added the comment: I agree, decorator factory definitely a better name -- ___ Python tracker <https://bugs.python.org/issue42455> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42392] remove the deprecated 'loop' parameter asyncio API
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +22432 pull_request: https://github.com/python/cpython/pull/23552 ___ Python tracker <https://bugs.python.org/issue42392> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42392] remove the 'loop' parameter from __init__ in all classes in asyncio.locks
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +22405 pull_request: https://github.com/python/cpython/pull/23521 ___ Python tracker <https://bugs.python.org/issue42392> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42392] remove the 'loop' parameter from __init__ in all classes in asyncio.locks
Change by Yurii Karabas <1998uri...@gmail.com>: -- pull_requests: +22402 pull_request: https://github.com/python/cpython/pull/23517 ___ Python tracker <https://bugs.python.org/issue42392> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue42459] Wrong Output
Yurii Karabas <1998uri...@gmail.com> added the comment: There is a little error in your code, it should look like this: ``` def test(sum): return int(sum) if test(10) == 10: print("Yes") else: print("No") ``` Basically `if sum == 10:` will compare builtin function sum with int value. This isn't an issue we can close it. -- nosy: +uriyyo ___ Python tracker <https://bugs.python.org/issue42459> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com