canvasapi icon indicating copy to clipboard operation
canvasapi copied to clipboard

setting “python_requires” with ">=3.7" is a better way to declare Python compatibility

Open PyVCEchecker opened this issue 1 year ago • 0 comments

Hello!

I noticed the code snippet in setup.py

# Get the PyPI package info from the readme
this_directory = path.abspath(path.dirname(__file__))
with open(path.join(this_directory, "README.md"), encoding="utf-8") as f:
    long_description = f.read()

setup.py used a Python3-specific keyword argument encoding for the function open, which lead to installation failure of Inject in Python 2. And there is such a declaration.

  classifiers=[
      ...
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        ...
    ]

I guess you want to set python>=3.7. And I think it is a better way to declare Python compatibility by using the keyword argument python_requires

  • Descriptions in python_requires will be reflected in the metadata
  • “pip install” can check such metadata on the fly during distribution selection , and prevent from downloading and installing the incompatible package versions.
  • If the user does not specify any version constraint, pip can automatically choose the latest compatible package version for users.

Way to improve: modify setup() in setup.py, add python_requires keyword argument:

setup(…
     python_requires=">=3.7",
     …)

Thanks for your attention. Best regrads, PyVCEchecker

PyVCEchecker avatar Nov 04 '22 09:11 PyVCEchecker