Author: Armin Rigo <ar...@tunes.org> Branch: py3.5 Changeset: r88888:5e500ed90cd8 Date: 2016-12-04 23:30 +0100 http://bitbucket.org/pypy/pypy/changeset/5e500ed90cd8/
Log: Py3.5 always adds these three names to all new modules (thanks Tiberium) diff --git a/pypy/interpreter/module.py b/pypy/interpreter/module.py --- a/pypy/interpreter/module.py +++ b/pypy/interpreter/module.py @@ -22,11 +22,9 @@ self.w_name = w_name if w_name is not None: space.setitem(w_dict, space.new_interned_str('__name__'), w_name) - if add_package: - # add the __package__ attribute only when created from internal - # code, but not when created from Python code (as in CPython) - space.setitem(w_dict, space.new_interned_str('__package__'), - space.w_None) + # add these three attributes always ('add_package' is no longer used) + for extra in ['__package__', '__loader__', '__spec__']: + space.setitem(w_dict, space.new_interned_str(extra), space.w_None) self.startup_called = False def _cleanup_(self): diff --git a/pypy/interpreter/test/test_module.py b/pypy/interpreter/test/test_module.py --- a/pypy/interpreter/test/test_module.py +++ b/pypy/interpreter/test/test_module.py @@ -181,7 +181,7 @@ assert sys.__package__ == '' assert os.__package__ == '' - assert not hasattr(type(sys)('foo'), '__package__') + assert type(sys)('foo').__package__ is None def test_name_nonascii(self): import sys @@ -206,3 +206,12 @@ def test_weakrefable(self): import weakref weakref.ref(weakref) + + def test_all_dict_content(self): + import sys + m = type(sys)('foo') + assert m.__dict__ == {'__name__': 'foo', + '__doc__': None, + '__package__': None, + '__loader__': None, + '__spec__': None} _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit