mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
dir() doesn't reify module
This commit is contained in:
parent
e5e9592863
commit
aa85f9d79e
3 changed files with 27 additions and 1 deletions
|
|
@ -2558,6 +2558,25 @@ def test_basic_unused(self):
|
|||
|
||||
self.assertFalse("test.test_import.data.lazy_imports.basic2" in sys.modules)
|
||||
|
||||
def test_basic_unused_dir(self):
|
||||
try:
|
||||
import test.test_import.data.lazy_imports.basic_unused
|
||||
except ImportError as e:
|
||||
self.fail('lazy import failed')
|
||||
|
||||
x = dir(test.test_import.data.lazy_imports.basic_unused)
|
||||
self.assertIn("test", x)
|
||||
self.assertFalse("test.test_import.data.lazy_imports.basic2" in sys.modules)
|
||||
|
||||
def test_basic_dir(self):
|
||||
try:
|
||||
from test.test_import.data.lazy_imports import basic_dir
|
||||
except ImportError as e:
|
||||
self.fail('lazy import failed')
|
||||
|
||||
self.assertIn("test", basic_dir.x)
|
||||
self.assertFalse("test.test_import.data.lazy_imports.basic2" in sys.modules)
|
||||
|
||||
def test_basic_used(self):
|
||||
try:
|
||||
import test.test_import.data.lazy_imports.basic_used
|
||||
|
|
|
|||
2
Lib/test/test_import/data/lazy_imports/basic_dir.py
Normal file
2
Lib/test/test_import/data/lazy_imports/basic_dir.py
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
lazy import test.test_import.data.lazy_imports.basic2
|
||||
x = dir()
|
||||
|
|
@ -1259,7 +1259,12 @@ static PyObject *
|
|||
module_dir(PyObject *self, PyObject *args)
|
||||
{
|
||||
PyObject *result = NULL;
|
||||
PyObject *dict = PyObject_GetAttr(self, &_Py_ID(__dict__));
|
||||
PyObject *dict;
|
||||
if (PyModule_CheckExact(self)) {
|
||||
dict = Py_NewRef(((PyModuleObject *)self)->md_dict);
|
||||
} else {
|
||||
dict = PyObject_GetAttr(self, &_Py_ID(__dict__));
|
||||
}
|
||||
|
||||
if (dict != NULL) {
|
||||
if (PyDict_Check(dict)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue