[Pytest-commit] Issue #704: Needs to handle VersionConflict in consider_setuptools_entrypoints (pytest-dev/pytest)
Daniel Hahler
issues-reply at bitbucket.org
Fri Mar 27 03:41:05 CET 2015
New issue 704: Needs to handle VersionConflict in consider_setuptools_entrypoints
https://bitbucket.org/pytest-dev/pytest/issue/704/needs-to-handle-versionconflict-in
Daniel Hahler:
I was getting the following error, caused by the testmon plugin, which
requires pytest<2.7:
…/pyenv/project2/lib/python2.7/site-packages/_pytest/config.py in _preparse(self, args, addopts)
711 self._checkversion()
712 self.pluginmanager.consider_preparse(args)
--> 713 self.pluginmanager.consider_setuptools_entrypoints()
714 self.pluginmanager.consider_env()
715 self.known_args_namespace = ns = self._parser.parse_known_args(args)
…/pyenv/project2/lib/python2.7/site-packages/_pytest/core.py in consider_setuptools_entrypoints(self)
276 continue
277 try:
--> 278 plugin = ep.load()
279 except DistributionNotFound:
280 continue
…/pyenv/project2/lib/python2.7/site-packages/pkg_resources/__init__.py in load(self, require, *args, **kwargs)
2318 )
2319 if require:
-> 2320 self.require(*args, **kwargs)
2321 return self.resolve()
2322
…/pyenv/project2/lib/python2.7/site-packages/pkg_resources/__init__.py in require(self, env, installer)
2335 raise UnknownExtra("Can't require() without a distribution", self)
2336 reqs = self.dist.requires(self.extras)
-> 2337 items = working_set.resolve(reqs, env, installer)
2338 list(map(working_set.add, items))
2339
…/pyenv/project2/lib/python2.7/site-packages/pkg_resources/__init__.py in resolve(self, requirements, env, installer, replace_conflicting)
812 dependent_req = required_by[req]
813 import ipdb; ipdb.set_trace() # noqa
--> 814 raise VersionConflict(dist, req).with_context(dependent_req)
815
816 # push the new requirements onto the stack
VersionConflict: (pytest 2.7.0 (…/pyenv/project2/lib/python2.7/site-packages), Requirement.parse('pytest<2.7'))
ipdb> args
self = <pkg_resources.WorkingSet object at 0x7f3ec2a55cd0>
requirements = [Requirement.parse('pathtools>=0.1.1'), Requirement.parse('argh>=0.24.1'), Requirement.parse('PyYAML>=3.10'), Requirement.parse('execnet>=1.1.dev1'), Requ
irement.parse('pytest>=2.2')] env = None
installer = None
replace_conflicting = False
`ep` is `EntryPoint.parse('testmon = testmon.plugin')`.
It would be nice if there was a warning in such a case and the plugin was
skipped.
A warning might be useful with the current handling of `DistributionNotFound`,
too.
More information about the pytest-commit
mailing list