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)
|
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):
|
def test_basic_used(self):
|
||||||
try:
|
try:
|
||||||
import test.test_import.data.lazy_imports.basic_used
|
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)
|
module_dir(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
PyObject *result = NULL;
|
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 (dict != NULL) {
|
||||||
if (PyDict_Check(dict)) {
|
if (PyDict_Check(dict)) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue