gh-102213: Optimize the performance of __getattr__#103761
gh-102213: Optimize the performance of __getattr__#103761Fidget-Spinner merged 8 commits intopython:mainfrom
__getattr__#103761Conversation
This is the corrected version of pythonGH-102248
Co-authored-by: Kirill <80244920+Eclips4@users.noreply.github.com>
__getattr____getattr__
|
Note to myself or whoever who merges this. Please add @wangxiang-hz to co-authors when merging as this is the fixed version of their PR, and the work should also be attributed to them. |
|
I will review and hopefully merge this on Friday when I have more time. Thanks. |
|
#103551 has a simple test case for the issue with the original PR, might be useful to add as a unit test for this PR. |
The test of #103551 should be covered by #103358. But a little duplication is okay. I will add it later. |
|
🤖 New build scheduled with the buildbot fleet by @Fidget-Spinner for commit c3aebf6 🤖 If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again. |
|
Does anyone have any idea why this fails? Got a timeout here: https://buildbot.python.org/all/#/builders/403/builds/1066 all builds: https://buildbot.python.org/all/#/changes/22158 |
This specific test seems flaky. I would ignore it. |
|
@Fidget-Spinner How is it going on? We are running out of time. New features will soon be frozen in May. 7th. Or will this be considered as a bug fix? |
|
🤖 New build scheduled with the buildbot fleet by @Fidget-Spinner for commit 75d9a70 🤖 If you want to schedule another build, you need to add the 🔨 test-with-buildbots label again. |
I'm triggering a buildbot rerun to see if that specific buildbot is actually impacted. |
|
https://buildbot.python.org/all/#builders/178/builds/1189 test_monitoring failure is tracked here Seems no more failures |
|
Please add news. You can copy the previous PR's news item. I will attribute the commit to both of you. |
|
Please, don't worry about 229 random files reported as changed. It's a GitHub after-merge artifact, the final commit 59c27fa squash-merged into |
* main: (26 commits) pythongh-104028: Reduce object creation while calling callback function from gc (pythongh-104030) pythongh-104036: Fix direct invocation of test_typing (python#104037) pythongh-102213: Optimize the performance of `__getattr__` (pythonGH-103761) pythongh-103895: Improve how invalid `Exception.__notes__` are displayed (python#103897) Adjust expression from `==` to `!=` in alignment with the meaning of the paragraph. (pythonGH-104021) pythongh-88496: Fix IDLE test hang on macOS (python#104025) Improve int test coverage (python#104024) pythongh-88773: Added teleport method to Turtle library (python#103974) pythongh-104015: Fix direct invocation of `test_dataclasses` (python#104017) pythongh-104012: Ensure test_calendar.CalendarTestCase.test_deprecation_warning consistently passes (python#104014) pythongh-103977: compile re expressions in platform.py only if required (python#103981) pythongh-98003: Inline call frames for CALL_FUNCTION_EX (pythonGH-98004) Replace Netlify with Read the Docs build previews (python#103843) Update name in acknowledgements and add mailmap (python#103696) pythongh-82054: allow test runner to split test_asyncio to execute in parallel by sharding. (python#103927) Remove non-existing tools from Sundry skiplist (python#103991) pythongh-103793: Defer formatting task name (python#103767) pythongh-87092: change assembler to use instruction sequence instead of CFG (python#103933) pythongh-103636: issue warning for deprecated calendar constants (python#103833) Various small fixes to dis docs (python#103923) ...
* main: (463 commits) pythongh-104057: Fix direct invocation of test_super (python#104064) pythongh-87092: Expose assembler to unit tests (python#103988) pythongh-97696: asyncio eager tasks factory (python#102853) pythongh-84436: Immortalize in _PyStructSequence_InitBuiltinWithFlags() (pythongh-104054) pythongh-104057: Fix direct invocation of test_module (pythonGH-104059) pythongh-100458: Clarify Enum.__format__() change of mixed-in types in the whatsnew/3.11.rst (pythonGH-100387) pythongh-104018: disallow "z" format specifier in %-format of byte strings (pythonGH-104033) pythongh-104016: Fixed off by 1 error in f string tokenizer (python#104047) pythonGH-103629: Update Unpack's repr in compliance with PEP 692 (python#104048) pythongh-102799: replace sys.exc_info by sys.exception in inspect and traceback modules (python#104032) Fix typo in "expected" word in few source files (python#104034) pythongh-103824: fix use-after-free error in Parser/tokenizer.c (python#103993) pythongh-104035: Do not ignore user-defined `__{get,set}state__` in slotted frozen dataclasses (python#104041) pythongh-104028: Reduce object creation while calling callback function from gc (pythongh-104030) pythongh-104036: Fix direct invocation of test_typing (python#104037) pythongh-102213: Optimize the performance of `__getattr__` (pythonGH-103761) pythongh-103895: Improve how invalid `Exception.__notes__` are displayed (python#103897) Adjust expression from `==` to `!=` in alignment with the meaning of the paragraph. (pythonGH-104021) pythongh-88496: Fix IDLE test hang on macOS (python#104025) Improve int test coverage (python#104024) ...
|
Sorry guys, I just noticed this pull request. I was buy with my work these weeks and just finished a major update at the end of April.. |
This is the logically corrected version of GH-102248.
GH-102248 caused several issues and had been reverted. This PR (I think) correctly implements it.
Tests passed on Ubuntu 22.04 (WSL) gcc-11 with
--pydebug.I also do the perf tests in the original PR, (
--enable-optimizationswith my AMD 5900X)Before,
After,
cc: @Fidget-Spinner