Skip to content

gh-103193: Improve getattr_static test coverage - #104286

Merged
AlexWaygood merged 1 commit into
python:mainfrom
AlexWaygood:attr_static-coverage
May 8, 2023
Merged

gh-103193: Improve getattr_static test coverage#104286
AlexWaygood merged 1 commit into
python:mainfrom
AlexWaygood:attr_static-coverage

Conversation

@AlexWaygood

@AlexWaygoodAlexWaygood commented May 8, 2023

Copy link
Copy Markdown
Member

Currently, no tests would fail if we were to apply this optimisation to getattr_static, which makes things a fair bit faster:

--- a/Lib/inspect.py+++ b/Lib/inspect.py@@ -1780,13 +1780,9 @@ def trace(context=1):
def _check_instance(obj, attr):
- instance_dict = {}- try:- instance_dict = object.__getattribute__(obj, "__dict__")- except AttributeError:- pass- return dict.get(instance_dict, attr, _sentinel)-+ if hasattr(obj, "__dict__"):+ return dict.get(obj.__dict__, attr, _sentinel)+ return _sentinel

However, the optimisation would lead to incorrect behaviour. test_custom___getattribute__, added in this PR, would correctly fail if the incorrect optimisation were applied.

@miss-islington

Copy link
Copy Markdown
Contributor

Thanks @AlexWaygood for the PR 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒⛏🤖

@miss-islington

Copy link
Copy Markdown
Contributor

Sorry @AlexWaygood, I had trouble checking out the 3.11 backport branch.
Please retry by removing and re-adding the "needs backport to 3.11" label.
Alternatively, you can backport using cherry_picker on the command line.
cherry_picker 921185ed050efbca2f0adeab79f676b7f8cc3660 3.11

@AlexWaygood
AlexWaygood deleted the attr_static-coverage branch May 8, 2023 14:18
@AlexWaygoodAlexWaygood added needs backport to 3.11 only security fixes and removed needs backport to 3.11 only security fixes labels May 8, 2023
@miss-islington

Copy link
Copy Markdown
Contributor

Thanks @AlexWaygood for the PR 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒⛏🤖

@bedevere-bot

Copy link
Copy Markdown

GH-104290 is a backport of this pull request to the 3.11 branch.

@bedevere-botbedevere-bot removed the needs backport to 3.11 only security fixes label May 8, 2023
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 8, 2023
)
(cherry picked from commit 921185e)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
AlexWaygood added a commit that referenced this pull request May 8, 2023
…104290)
gh-103193: Improve `getattr_static` test coverage (GH-104286)
(cherry picked from commit 921185e)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
jbower-fb pushed a commit to jbower-fb/cpython that referenced this pull request May 8, 2023
carljm added a commit to carljm/cpython that referenced this pull request May 9, 2023
* main: (47 commits)
pythongh-97696 Remove unnecessary check for eager_start kwarg (python#104188)
pythonGH-104308: socket.getnameinfo should release the GIL (python#104307)
pythongh-104310: Add importlib.util.allowing_all_extensions() (pythongh-104311)
pythongh-99113: A Per-Interpreter GIL! (pythongh-104210)
pythonGH-104284: Fix documentation gettext build (python#104296)
pythongh-89550: Buffer GzipFile.write to reduce execution time by ~15% (python#101251)
pythongh-104223: Fix issues with inheriting from buffer classes (python#104227)
pythongh-99108: fix typo in Modules/Setup (python#104293)
pythonGH-104145: Use fully-qualified cross reference types for the bisect module (python#104172)
pythongh-103193: Improve `getattr_static` test coverage (python#104286)
Trim trailing whitespace and test on CI (python#104275)
pythongh-102500: Remove mention of bytes shorthand (python#104281)
pythongh-97696: Improve and fix documentation for asyncio eager tasks (python#104256)
pythongh-99108: Replace SHA3 implementation HACL* version (python#103597)
pythongh-104273: Remove redundant len() calls in argparse function (python#104274)
pythongh-64660: Don't hardcode Argument Clinic return converter result variable name (python#104200)
pythongh-104265 Disallow instantiation of `_csv.Reader` and `_csv.Writer` (python#104266)
pythonGH-102613: Improve performance of `pathlib.Path.rglob()` (pythonGH-104244)
pythongh-103650: Fix perf maps address format (python#103651)
pythonGH-89812: Churn `pathlib.Path` methods (pythonGH-104243)
...
carljm added a commit to carljm/cpython that referenced this pull request May 9, 2023
* main: (29 commits)
pythongh-104276: Make `_struct.unpack_iterator` type use type flag instead of custom constructor (python#104277)
pythongh-97696: Move around and update the whatsnew entry for asyncio eager task factory (python#104298)
pythongh-103193: Fix refleaks in `test_inspect` and `test_typing` (python#104320)
require-pr-label.yml: Add missing "permissions:" (python#104309)
pythongh-90656: Add platform triplets for 64-bit LoongArch (LA64) (python#30939)
pythongh-104180: Read SOCKS proxies from macOS System Configuration (python#104181)
pythongh-97696 Remove unnecessary check for eager_start kwarg (python#104188)
pythonGH-104308: socket.getnameinfo should release the GIL (python#104307)
pythongh-104310: Add importlib.util.allowing_all_extensions() (pythongh-104311)
pythongh-99113: A Per-Interpreter GIL! (pythongh-104210)
pythonGH-104284: Fix documentation gettext build (python#104296)
pythongh-89550: Buffer GzipFile.write to reduce execution time by ~15% (python#101251)
pythongh-104223: Fix issues with inheriting from buffer classes (python#104227)
pythongh-99108: fix typo in Modules/Setup (python#104293)
pythonGH-104145: Use fully-qualified cross reference types for the bisect module (python#104172)
pythongh-103193: Improve `getattr_static` test coverage (python#104286)
Trim trailing whitespace and test on CI (python#104275)
pythongh-102500: Remove mention of bytes shorthand (python#104281)
pythongh-97696: Improve and fix documentation for asyncio eager tasks (python#104256)
pythongh-99108: Replace SHA3 implementation HACL* version (python#103597)
...
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip newstestsTests in the Lib/test dir

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@AlexWaygood@miss-islington@bedevere-bot@carljm