Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
a51623b1
Kaydet (Commit)
a51623b1
authored
Ara 18, 2011
tarafından
Michael Foord
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Fix inspect.getattr_static to work on modules (again).
Closes issue 11813.
üst
bd206e27
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
14 additions
and
4 deletions
+14
-4
inspect.py
Lib/inspect.py
+6
-4
test_inspect.py
Lib/test/test_inspect.py
+5
-0
NEWS
Misc/NEWS
+3
-0
No files found.
Lib/inspect.py
Dosyayı görüntüle @
a51623b1
...
...
@@ -1084,7 +1084,7 @@ def _check_instance(obj, attr):
def
_check_class
(
klass
,
attr
):
for
entry
in
_static_getmro
(
klass
):
if
not
_shadowed_dict
(
type
(
entry
))
:
if
_shadowed_dict
(
type
(
entry
))
is
_sentinel
:
try
:
return
entry
.
__dict__
[
attr
]
except
KeyError
:
...
...
@@ -1109,8 +1109,8 @@ def _shadowed_dict(klass):
if
not
(
type
(
class_dict
)
is
types
.
GetSetDescriptorType
and
class_dict
.
__name__
==
"__dict__"
and
class_dict
.
__objclass__
is
entry
):
return
True
return
False
return
class_dict
return
_sentinel
def
getattr_static
(
obj
,
attr
,
default
=
_sentinel
):
"""Retrieve attributes without triggering dynamic lookup via the
...
...
@@ -1126,7 +1126,9 @@ def getattr_static(obj, attr, default=_sentinel):
instance_result
=
_sentinel
if
not
_is_type
(
obj
):
klass
=
type
(
obj
)
if
not
_shadowed_dict
(
klass
):
dict_attr
=
_shadowed_dict
(
klass
)
if
(
dict_attr
is
_sentinel
or
type
(
dict_attr
)
is
types
.
MemberDescriptorType
):
instance_result
=
_check_instance
(
obj
,
attr
)
else
:
klass
=
obj
...
...
Lib/test/test_inspect.py
Dosyayı görüntüle @
a51623b1
...
...
@@ -1004,6 +1004,11 @@ class TestGetattrStatic(unittest.TestCase):
self
.
assertEqual
(
inspect
.
getattr_static
(
instance
,
"spam"
),
42
)
self
.
assertFalse
(
Thing
.
executed
)
def
test_module
(
self
):
sentinel
=
object
()
self
.
assertIsNot
(
inspect
.
getattr_static
(
sys
,
"version"
,
sentinel
),
sentinel
)
class
TestGetGeneratorState
(
unittest
.
TestCase
):
def
setUp
(
self
):
...
...
Misc/NEWS
Dosyayı görüntüle @
a51623b1
...
...
@@ -97,6 +97,9 @@ Core and Builtins
Library
-------
- Issue #11813: Fix inspect.getattr_static for modules. Patch by Andreas
Stührk.
- Issue #7502: Fix equality comparison for DocTestCase instances. Patch by
Cédric Krier.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment