-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Closed

Description
Originally reported by: rutsky (Bitbucket: rutsky, GitHub: rutsky)
DirectorySandbox replaces builtin.file
class with wrapper function (DirectorySandbox._file method).
isinstance(..., file)
raises TypeError
if file
is not type or tuple of types, and wrapper function isn't a type.
This issue, for example, prevents adding autobahn
+ Twisted
in tests_require
— it fails with:
Searching for autobahn>=0.10.2
Reading https://pypi.python.org/simple/autobahn/
Best match: autobahn 0.12.1
Downloading https://pypi.python.org/packages/source/a/autobahn/autobahn-0.12.1.tar.gz#md5=b4b5445050749c1033b9b58f694f0c64
Processing autobahn-0.12.1.tar.gz
Writing /tmp/easy_install-Qvmn6U/autobahn-0.12.1/setup.cfg
Running autobahn-0.12.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Qvmn6U/autobahn-0.12.1/egg-dist-tmp-hK_w1q
package init file 'twisted/plugins/__init__.py' not found (or not a regular file)
Traceback (most recent call last):
File "setup.py", line 447, in <module>
setup(**setup_args)
File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/command/test.py", line 150, in run
self.distribution.install_requires)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/dist.py", line 313, in fetch_build_eggs
replace_conflicting=True,
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 825, in resolve
dist = best[req.key] = env.best_match(req, ws, installer)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1070, in best_match
return self.obtain(req, installer)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1082, in obtain
return installer(requirement)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/dist.py", line 380, in fetch_build_egg
return cmd.easy_install(req)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 640, in easy_install
return self.install_item(spec, dist.location, tmpdir, deps)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 670, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 853, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1081, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1067, in run_setup
run_setup(setup_script, args)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 246, in run_setup
raise
File "/usr/lib/python2.7/contextlib.py", line 35, in __exit__
self.gen.throw(type, value, traceback)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 195, in setup_context
yield
File "/usr/lib/python2.7/contextlib.py", line 35, in __exit__
self.gen.throw(type, value, traceback)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 166, in save_modules
saved_exc.resume()
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 141, in resume
six.reraise(type, exc, self._tb)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 154, in save_modules
yield saved
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 195, in setup_context
yield
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 243, in run_setup
DirectorySandbox(setup_dir).run(runner)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 273, in run
return func()
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 242, in runner
_execfile(setup_script, ns)
File "/home/bob/stuff/buildbot/env-setuptools/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 46, in _execfile
exec(code, globals, locals)
File "/tmp/easy_install-Qvmn6U/autobahn-0.12.1/setup.py", line 242, in <module>
]),
File "/home/bob/stuff/buildbot/buildbot/master/.eggs/Twisted-15.5.0-py2.7-linux-x86_64.egg/twisted/internet/reactor.py", line 38, in <module>
from twisted.internet import default
File "/home/bob/stuff/buildbot/buildbot/master/.eggs/Twisted-15.5.0-py2.7-linux-x86_64.egg/twisted/internet/default.py", line 56, in <module>
install = _getInstallFunction(platform)
File "/home/bob/stuff/buildbot/buildbot/master/.eggs/Twisted-15.5.0-py2.7-linux-x86_64.egg/twisted/internet/default.py", line 44, in _getInstallFunction
from twisted.internet.epollreactor import install
File "/home/bob/stuff/buildbot/buildbot/master/.eggs/Twisted-15.5.0-py2.7-linux-x86_64.egg/twisted/internet/epollreactor.py", line 23, in <module>
from twisted.python import log
File "/home/bob/stuff/buildbot/buildbot/master/.eggs/Twisted-15.5.0-py2.7-linux-x86_64.egg/twisted/python/log.py", line 25, in <module>
from twisted.logger import (
File "/home/bob/stuff/buildbot/buildbot/master/.eggs/Twisted-15.5.0-py2.7-linux-x86_64.egg/twisted/logger/__init__.py", line 116, in <module>
from ._global import (
File "/home/bob/stuff/buildbot/buildbot/master/.eggs/Twisted-15.5.0-py2.7-linux-x86_64.egg/twisted/logger/_global.py", line 219, in <module>
globalLogBeginner = LogBeginner(globalLogPublisher, sys.stderr, sys, warnings)
File "/home/bob/stuff/buildbot/buildbot/master/.eggs/Twisted-15.5.0-py2.7-linux-x86_64.egg/twisted/logger/_global.py", line 86, in __init__
errorStream, lambda event: formatEvent(event) + u"\n"
File "/home/bob/stuff/buildbot/buildbot/master/.eggs/Twisted-15.5.0-py2.7-linux-x86_64.egg/twisted/logger/_file.py", line 34, in __init__
if ioType(outFile) is not unicode:
File "/home/bob/stuff/buildbot/buildbot/master/.eggs/Twisted-15.5.0-py2.7-linux-x86_64.egg/twisted/python/compat.py", line 340, in ioType
if isinstance(fileIshObject, file):
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
due to the following code in Twisted:
if not _PY3:
# Special case: if we have an encoding file, we can *give* it unicode,
# but we can't expect to *get* unicode.
if isinstance(fileIshObject, file):
...
I propose to replace method-wrapper _file
with class-wrapper that will inherit from builtin.file
to emulate native file
more precisely.
Lekensteyn