Closed pquentin closed 4 years ago
The safety package ran fine on Python 2.7 until dparse 0.5.0 introduced the infinite recursion.
May I suggest that the solution to an infinite recursion problem is not to exclude the platform on which it occurs, but to fix the issue. I am well aware that CPython 2.7 is no longer supported by the PSF, but it is still in widespread use, and a security relevant package like safety should make its version support decisions based on actual usage. At least these are my 2 cents ...
For now, we will pin dparse to <0.5.0 on python 2.7.
Here is a traceback:
safety check -r minimum-constraints.txt --full-report
Traceback (most recent call last):
File "/Users/maiera/virtualenvs/pywbemtools27/bin/safety", line 8, in <module>
sys.exit(cli())
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/safety/cli.py", line 59, in check
packages = list(itertools.chain.from_iterable(read_requirements(f, resolve=True) for f in files))
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/safety/util.py", line 80, in read_requirements
req, = parse_line(parseable_line)
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/dparse/parser.py", line 62, in setuptools_parse_requirements_backport
for line in lines:
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/dparse/parser.py", line 58, in yield_lines
for s in yield_lines(ss):
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/dparse/parser.py", line 58, in yield_lines
for s in yield_lines(ss):
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/dparse/parser.py", line 58, in yield_lines
for s in yield_lines(ss):
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/dparse/parser.py", line 58, in yield_lines
...
for s in yield_lines(ss):
File "/Users/maiera/virtualenvs/pywbemtools27/lib/python2.7/site-packages/dparse/parser.py", line 50, in yield_lines
if isinstance(strs, str):
RuntimeError: maximum recursion depth exceeded while calling a Python object
Thanks for bringing that out.
Added requirement with 5c707969a479f4b28e70ceff2078afcda7c59db9 -- Should be releasing soon.
Can you please add
python_requires=">=3.5"
in your own setup.py file? We mistakenly installed thesafety
package with Python 2.7, and it started failing a few days ago due to an infinite recursion in yield_lines. Installing safety (and dparse) with Python 3 fixed the problem.Thanks!