Skip to content

Older Pythons get incompatible versions due to undeclared dependency #130

@jaraco

Description

@jaraco

deepdiff should declare python_requires=">=3.4" or similar so that the packages uploaded to PyPI will be ignored by older Pythons. Otherwise, you run into issues like this:

~ $ python2.7 -m pip-run deepdiff                                                                                                                                                                          
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Collecting deepdiff
  Downloading https://files.pythonhosted.org/packages/4b/bd/d37df1dfb92149f85004a31c0d34f4988437788142b44dbaa014b6491192/deepdiff-4.0.0.tar.gz (43kB)
    100% |████████████████████████████████| 51kB 309kB/s 
    Complete output from command python setup.py egg_info:
    Python 2 is not supported anymore. The last version of DeepDiff that supported Py2 was 3.3.0
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pip-install-rwx38m/deepdiff/
Traceback (most recent call last):
  File "/usr/local/Cellar/python@2/2.7.16/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/local/Cellar/python@2/2.7.16/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/site-packages/pip-run.py", line 4, in <module>
    __name__ == '__main__' and run()
  File "/usr/local/lib/python2.7/site-packages/pip_run/__init__.py", line 18, in run
    with deps.load(*deps.not_installed(pip_args)) as home:
  File "/usr/local/Cellar/python@2/2.7.16/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "/usr/local/lib/python2.7/site-packages/pip_run/deps.py", line 75, in load
    _installable(args) and subprocess.check_call(cmd)
  File "/usr/local/Cellar/python@2/2.7.16/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 190, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '('/usr/local/opt/python@2/bin/python2.7', '-m', 'pip', 'install', '-t', '/var/folders/c6/v7hnmq453xb6p2dbz1gqc6rr0000gn/T/pip-run-Ek0QU9', 'deepdiff')' returned non-zero exit status 1

If instead, deepdiff were to declare its dependency, pip (9 or later) would automatically filter out versions not valid on older platforms.

Without this feature, every downstream consumer is required to maintain an (un)conditional upper bound on the deepdiff version.

Since 4.0.0 was only recently released, can I ask that you please cut a new 4.0.1 release with this declaration and pull the 4.0.0 release so that Python 2.7 consumers aren't offered it?

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions