summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Mueller <30130371+cdce8p@users.noreply.github.com>2022-06-28 23:39:17 +0200
committerGitHub <noreply@github.com>2022-06-28 23:39:17 +0200
commit0d36a63303eb902de3c33a6094260bc385681d2d (patch)
tree961e617cb583d24204d6d6ef7dfd6c81d4e214ae
parentc74493bdb969c40b0b9bc503b239c572ee31641b (diff)
downloadpylint-git-0d36a63303eb902de3c33a6094260bc385681d2d.tar.gz
Improve packaging [PEP 517 + 621] (#7076)
* Use isolated build environments * Update release ci job to use build * Use new project metadata format * Cleanup MANIFEST.in * Remove setup.py
-rw-r--r--.flake87
-rw-r--r--.github/workflows/release.yml7
-rw-r--r--.pre-commit-config.yaml2
-rw-r--r--.pyenchant_pylint_custom_dict.txt1
-rw-r--r--Dockerfile2
-rw-r--r--MANIFEST.in14
-rw-r--r--pyproject.toml79
-rw-r--r--setup.cfg85
-rw-r--r--setup.py3
9 files changed, 102 insertions, 98 deletions
diff --git a/.flake8 b/.flake8
deleted file mode 100644
index 9a701d7f0..000000000
--- a/.flake8
+++ /dev/null
@@ -1,7 +0,0 @@
-[flake8]
-ignore =
- E203, W503, # Incompatible with black see https://github.com/ambv/black/issues/315
- E501, # Lot of lines too long right now
-
-max-line-length=88
-max-complexity=39
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 883489671..7e6c457a9 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -22,11 +22,12 @@ jobs:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Install requirements
run: |
- python -m pip install -U pip twine wheel
- python -m pip install -U "setuptools>=56.0.0"
+ # Remove dist, build, and pylint.egg-info
+ # when building locally for testing!
+ python -m pip install twine build
- name: Build distributions
run: |
- python setup.py sdist bdist_wheel
+ python -m build
- name: Upload to PyPI
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags')
env:
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 3e864bf52..e0a44baad 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -30,7 +30,7 @@ repos:
hooks:
- id: copyright-notice
args: ["--notice=script/copyright.txt", "--enforce-all"]
- exclude: tests(/\w*)*/functional/|tests/input|doc/data/messages|examples/|setup.py|tests(/\w*)*data/
+ exclude: tests(/\w*)*/functional/|tests/input|doc/data/messages|examples/|tests(/\w*)*data/
types: [python]
- repo: https://github.com/asottile/pyupgrade
rev: v2.34.0
diff --git a/.pyenchant_pylint_custom_dict.txt b/.pyenchant_pylint_custom_dict.txt
index 825ffe1f8..ec4d4927b 100644
--- a/.pyenchant_pylint_custom_dict.txt
+++ b/.pyenchant_pylint_custom_dict.txt
@@ -76,6 +76,7 @@ deepcopy
defframe
defstmts
deleter
+dependabot
deque
destructured
destructuring
diff --git a/Dockerfile b/Dockerfile
index 2667145da..7bde0a292 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,6 +2,6 @@ FROM python:3.10.0-alpine3.15
COPY ./ /tmp/build
WORKDIR /tmp/build
-RUN python setup.py install && rm -rf /tmp/build
+RUN python -m pip install . && rm -rf /tmp/build
ENTRYPOINT ["pylint"]
diff --git a/MANIFEST.in b/MANIFEST.in
index d35466894..9561fb106 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,13 +1 @@
-recursive-exclude pylint *.rst
-prune .github
-prune doc
-prune elisp
-prune examples
-prune tests
-prune script
-exclude .*
-exclude Dockerfile
-exclude README.rst
-exclude pylintrc
-exclude requirements_*.txt
-exclude tox.ini
+include README.rst
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 000000000..c2f041cf3
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,79 @@
+[build-system]
+requires = ["setuptools~=62.6", "wheel~=0.37.1"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "pylint"
+license = {text = "GPL-2.0-or-later"}
+description = "python code static checker"
+readme = "README.rst"
+authors = [
+ {name = "Python Code Quality Authority", email = "code-quality@python.org"}
+]
+keywords = ["static code analysis", "linter", "python", "lint"]
+classifiers = [
+ "Development Status :: 6 - Mature",
+ "Environment :: Console",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3 :: Only",
+ "Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: Implementation :: CPython",
+ "Programming Language :: Python :: Implementation :: PyPy",
+ "Topic :: Software Development :: Debuggers",
+ "Topic :: Software Development :: Quality Assurance",
+ "Topic :: Software Development :: Testing",
+]
+requires-python = ">=3.7.2"
+dependencies = [
+ "dill>=0.2",
+ "platformdirs>=2.2.0",
+ # Also upgrade requirements_test_min.txt if you are bumping astroid.
+ # Pinned to dev of next minor update to allow editable installs,
+ # see https://github.com/PyCQA/astroid/issues/1341
+ "astroid>=2.11.6,<=2.12.0-dev0",
+ "isort>=4.2.5,<6",
+ "mccabe>=0.6,<0.8",
+ "tomli>=1.1.0;python_version<'3.11'",
+ "tomlkit>=0.10.1",
+ "colorama>=0.4.5;sys_platform=='win32'",
+ "typing-extensions>=3.10.0;python_version<'3.10'",
+]
+dynamic = ["version"]
+
+[project.optional-dependencies]
+testutils = ["gitpython>3"]
+spelling = ["pyenchant~=3.2"]
+
+[project.urls]
+"Docs: User Guide" = "https://pylint.pycqa.org/en/latest/"
+"Source Code" = "https://github.com/PyCQA/pylint"
+"What's New" = "https://pylint.pycqa.org/en/latest/whatsnew/2/"
+"Bug Tracker" = "https://github.com/PyCQA/pylint/issues"
+"Discord Server" = "https://discord.com/invite/Egy6P8AMB5"
+"Docs: Contributer Guide" = "https://pylint.pycqa.org/en/latest/development_guide/contributor_guide/index.html"
+
+[project.scripts]
+pylint = "pylint:run_pylint"
+pylint-config = "pylint:_run_pylint_config"
+epylint = "pylint:run_epylint"
+pyreverse = "pylint:run_pyreverse"
+symilar = "pylint:run_symilar"
+
+[tool.setuptools]
+license-files = ["LICENSE", "CONTRIBUTORS.txt"] # Keep in sync with setup.cfg
+
+[tool.setuptools.packages.find]
+include = ["pylint*"]
+
+[tool.setuptools.package-data]
+pylint = ["testutils/testing_pylintrc"]
+
+[tool.setuptools.dynamic]
+version = {attr = "pylint.__pkginfo__.__version__"}
diff --git a/setup.cfg b/setup.cfg
index e2b157d44..2c13527cb 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,77 +1,12 @@
+# Setuptools v62.6 doesn't support editable installs with just 'pyproject.toml' (PEP 660).
+# Keep this file until it does!
+
[metadata]
-name = pylint
-version = attr: pylint.__pkginfo__.__version__
-description = python code static checker
-long_description = file: README.rst
-long_description_content_type = text/x-rst
-author = Python Code Quality Authority
-author_email = code-quality@python.org
-license = GPL-2.0-or-later
+# wheel doesn't yet read license_files from pyproject.toml - tools.setuptools
+# Keep it here until it does!
license_files =
LICENSE
CONTRIBUTORS.txt
-classifiers =
- Development Status :: 6 - Mature
- Environment :: Console
- Intended Audience :: Developers
- License :: OSI Approved :: GNU General Public License v2 (GPLv2)
- Operating System :: OS Independent
- Programming Language :: Python
- Programming Language :: Python :: 3
- Programming Language :: Python :: 3 :: Only
- Programming Language :: Python :: 3.7
- Programming Language :: Python :: 3.8
- Programming Language :: Python :: 3.9
- Programming Language :: Python :: 3.10
- Programming Language :: Python :: Implementation :: CPython
- Programming Language :: Python :: Implementation :: PyPy
- Topic :: Software Development :: Debuggers
- Topic :: Software Development :: Quality Assurance
- Topic :: Software Development :: Testing
-keywords = static code analysis linter python lint
-project_urls =
- Docs: User Guide = https://pylint.pycqa.org/en/latest/
- Source Code = https://github.com/PyCQA/pylint
- What's New = https://pylint.pycqa.org/en/latest/whatsnew/2/
- Bug Tracker = https://github.com/PyCQA/pylint/issues
- Discord Server = https://discord.com/invite/Egy6P8AMB5
- Docs: Contributer Guide = https://pylint.pycqa.org/en/latest/development_guide/contributor_guide/index.html
-
-[options]
-packages = find:
-install_requires =
- dill>=0.2
- platformdirs>=2.2.0
- # Also upgrade requirements_test_min.txt if you are bumping astroid.
- # Pinned to dev of next minor update to allow editable installs,
- # see https://github.com/PyCQA/astroid/issues/1341
- astroid>=2.11.6,<=2.12.0-dev0
- isort>=4.2.5,<6
- mccabe>=0.6,<0.8
- tomli>=1.1.0;python_version<"3.11"
- tomlkit>=0.10.1
- colorama>=0.4.5;sys_platform=="win32"
- typing-extensions>=3.10.0;python_version<"3.10"
-python_requires = >=3.7.2
-
-[options.extras_require]
-testutils=gitpython>3
-spelling=pyenchant~=3.2
-
-[options.packages.find]
-include =
- pylint*
-
-[options.entry_points]
-console_scripts =
- pylint = pylint:run_pylint
- pylint-config = pylint:_run_pylint_config
- epylint = pylint:run_epylint
- pyreverse = pylint:run_pyreverse
- symilar = pylint:run_symilar
-
-[options.package_data]
-pylint = testutils/testing_pylintrc
[aliases]
test = pytest
@@ -93,6 +28,16 @@ known_third_party = platformdirs, astroid, sphinx, isort, pytest, mccabe, six, t
skip_glob = tests/functional/**,tests/input/**,tests/extensions/data/**,tests/regrtest_data/**,tests/data/**,astroid/**,venv/**
src_paths = pylint
+[flake8]
+ignore =
+ E203, W503, # Incompatible with black see https://github.com/ambv/black/issues/315
+ E501, # Lot of lines too long right now
+max-line-length=88
+max-complexity=39
+# Required for flake8-typing-imports (v1.12.0)
+# The plugin doesn't yet read the value from pyproject.toml
+min_python_version = 3.7.2
+
[mypy]
no_implicit_optional = True
scripts_are_modules = True
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 606849326..000000000
--- a/setup.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from setuptools import setup
-
-setup()