Upgrade lint infra & add a few more conservative built-in checks (#2286)
This commit is contained in:
parent
47de64f1f5
commit
e43f567e93
|
@ -6,7 +6,7 @@
|
|||
* @python/pep-editors
|
||||
|
||||
# PEP infrastructure
|
||||
.github/workflows/ @AA-Turner
|
||||
.github/workflows/ @AA-Turner @CAM-Gerlach
|
||||
Makefile @AA-Turner
|
||||
requirements.txt @AA-Turner
|
||||
.pre-commit-config.yml @CAM-Gerlach
|
||||
|
@ -38,6 +38,7 @@ pep-0009.txt @warsaw
|
|||
pep-0010.txt @warsaw
|
||||
pep-0011.txt @brettcannon
|
||||
pep-0012.rst @brettcannon @warsaw
|
||||
pep-0012/ @brettcannon
|
||||
# pep-0013.rst is owned by the entire core team.
|
||||
# ...
|
||||
pep-0020.txt @tim-one
|
||||
|
@ -319,6 +320,7 @@ pep-0462.txt @ncoghlan
|
|||
# pep-0463.txt
|
||||
pep-0464.txt @dstufft
|
||||
pep-0465.txt @njsmith
|
||||
pep-0465/ @njsmith
|
||||
pep-0466.txt @ncoghlan
|
||||
pep-0467.txt @ncoghlan @ethanfurman
|
||||
pep-0468.txt @ericsnowcurrently
|
||||
|
@ -478,7 +480,7 @@ pep-0603-hamt_vs_dict.png @1st1
|
|||
pep-0605.rst @zooba @ncoghlan
|
||||
pep-0605-example-release-calendar.png @zooba @ncoghlan
|
||||
pep-0605-overlapping-support-matrix.png @zooba @ncoghlan
|
||||
/pep-0605/ @zooba @ncoghlan
|
||||
pep-0605/ @zooba @ncoghlan
|
||||
pep-0606.rst @vstinner
|
||||
pep-0607.rst @ambv @zooba @ncoghlan
|
||||
pep-0608.rst @vstinner
|
||||
|
@ -536,7 +538,7 @@ pep-0659.rst @markshannon
|
|||
pep-0660.rst @pfmoore
|
||||
pep-0661.rst @taleinat
|
||||
pep-0662.rst @brettcannon
|
||||
pep-0662/pep-0662-editables.json @brettcannon
|
||||
pep-0662/ @brettcannon
|
||||
pep-0663.txt @ethanfurman
|
||||
pep-0664.rst @pablogsal
|
||||
pep-0665.rst @brettcannon
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
name: Build
|
||||
name: Docutils Build
|
||||
|
||||
on: [push, pull_request, workflow_dispatch]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build with Docutils
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Check out repo
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
name: Deploy to GitHub Pages
|
||||
name: Sphinx Build
|
||||
|
||||
on: [push, pull_request, workflow_dispatch]
|
||||
|
||||
jobs:
|
||||
deploy-to-pages:
|
||||
name: Build & deploy to GitHub Pages
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
@ -15,13 +16,13 @@ jobs:
|
|||
- name: 🐍 Set up Python 3
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3
|
||||
python-version: '3.x'
|
||||
cache: "pip"
|
||||
|
||||
- name: 👷 Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install -r requirements.txt
|
||||
python -m pip install --upgrade -r requirements.txt
|
||||
|
||||
- name: 🔧 Build PEPs
|
||||
run: make pages -j$(nproc)
|
||||
|
@ -33,7 +34,7 @@ jobs:
|
|||
- name: 🚀 Deploy to GitHub pages
|
||||
# This allows CI to build branches for testing
|
||||
if: github.ref == 'refs/heads/main'
|
||||
uses: JamesIves/github-pages-deploy-action@4.1.1
|
||||
uses: JamesIves/github-pages-deploy-action@v4.2.2
|
||||
with:
|
||||
branch: gh-pages # The branch to deploy to.
|
||||
folder: build # Synchronise with build.py -> build_directory
|
||||
|
|
|
@ -4,8 +4,17 @@ on: [push, pull_request, workflow_dispatch]
|
|||
|
||||
jobs:
|
||||
pre-commit:
|
||||
name: Run pre-commit
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
- uses: pre-commit/action@v2.0.0
|
||||
- name: Check out repo
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python 3
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Run pre-commit hooks
|
||||
uses: pre-commit/action@v2.0.3
|
||||
|
|
|
@ -1,33 +1,77 @@
|
|||
# See https://pre-commit.com for more information
|
||||
# See https://pre-commit.com/hooks.html for more hooks
|
||||
|
||||
minimum_pre_commit_version: '2.8.2'
|
||||
|
||||
default_language_version:
|
||||
python: python3
|
||||
|
||||
default_stages: [commit]
|
||||
|
||||
|
||||
repos:
|
||||
# General file checks and fixers
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v3.4.0
|
||||
rev: v4.1.0
|
||||
hooks:
|
||||
- id: mixed-line-ending
|
||||
name: Normalize mixed line endings
|
||||
name: "Normalize mixed line endings"
|
||||
args: [--fix=lf]
|
||||
- id: fix-byte-order-marker
|
||||
name: "Remove Unicode BOM"
|
||||
- id: file-contents-sorter
|
||||
name: "Sort codespell ignore list"
|
||||
files: '.codespell/ignore-words.txt'
|
||||
|
||||
- id: check-case-conflict
|
||||
name: "Check for case conflicts"
|
||||
- id: check-merge-conflict
|
||||
name: "Check for merge conflict markers"
|
||||
- id: check-executables-have-shebangs
|
||||
name: "Check that executables have shebangs"
|
||||
- id: check-shebang-scripts-are-executable
|
||||
name: "Check that shebangs are executable"
|
||||
|
||||
- id: check-vcs-permalinks
|
||||
name: "Check that VCS links are permalinks"
|
||||
|
||||
- id: check-ast
|
||||
name: "Check Python AST"
|
||||
- id: check-json
|
||||
name: "Check JSON"
|
||||
- id: check-toml
|
||||
name: "Check TOML"
|
||||
- id: check-yaml
|
||||
name: "Check YAML"
|
||||
|
||||
# RST checks
|
||||
- repo: https://github.com/pre-commit/pygrep-hooks
|
||||
rev: v1.8.0
|
||||
rev: v1.9.0
|
||||
hooks:
|
||||
- id: rst-backticks
|
||||
name: "Check RST: No single backticks"
|
||||
- id: rst-inline-touching-normal
|
||||
name: "Check RST: No backticks touching text"
|
||||
files: '^pep-\d+\.txt|\.rst$'
|
||||
types: [text]
|
||||
- id: rst-directive-colons
|
||||
name: "Check RST: 2 colons after directives"
|
||||
files: '^pep-\d+\.txt|\.rst$'
|
||||
types: [text]
|
||||
|
||||
# Manual codespell check
|
||||
- repo: https://github.com/codespell-project/codespell
|
||||
rev: v2.1.0
|
||||
hooks:
|
||||
- id: codespell
|
||||
name: Check for common misspellings in text files
|
||||
name: "Check for common misspellings in text files"
|
||||
stages: [manual]
|
||||
|
||||
# Local checks for PEP headers and more
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: check-required-fields
|
||||
name: "Check all PEPs have required fields"
|
||||
name: "Check PEPs have all required fields"
|
||||
language: pygrep
|
||||
entry: '(?-m:^PEP:(?=[\s\S]*\nTitle:)(?=[\s\S]*\nAuthor:)(?=[\s\S]*\nStatus:)(?=[\s\S]*\nType:)(?=[\s\S]*\nContent-Type:)(?=[\s\S]*\nCreated:))'
|
||||
args: ['--negate', '--multiline']
|
||||
|
@ -41,19 +85,19 @@ repos:
|
|||
files: '^pep-\d+\.(rst|txt)$'
|
||||
types: [text]
|
||||
- id: validate-status
|
||||
name: "Validate PEP Status field"
|
||||
name: "Validate PEP 'Status' field"
|
||||
language: pygrep
|
||||
entry: '^Status:(?:(?! +(Draft|Withdrawn|Rejected|Accepted|Final|Active|Provisional|Deferred|Superseded|April Fool!)$))'
|
||||
files: '^pep-\d+\.(rst|txt)$'
|
||||
types: [text]
|
||||
- id: validate-type
|
||||
name: "Validate PEP Type field"
|
||||
name: "Validate PEP 'Type' field"
|
||||
language: pygrep
|
||||
entry: '^Type:(?:(?! +(Standards Track|Informational|Process)$))'
|
||||
files: '^pep-\d+\.(rst|txt)$'
|
||||
types: [text]
|
||||
- id: validate-content-type
|
||||
name: "Validate PEP Content-Type field"
|
||||
name: "Validate PEP 'Content-Type' field"
|
||||
language: pygrep
|
||||
entry: '^Content-Type:(?:(?! +text\/x-rst$))'
|
||||
files: '^pep-\d+\.(rst|txt)$'
|
||||
|
@ -65,19 +109,19 @@ repos:
|
|||
files: '^pep-\d+\.(rst|txt)$'
|
||||
types: [text]
|
||||
- id: validate-created
|
||||
name: "Validate created dates"
|
||||
name: "Validate PEP 'Created' field"
|
||||
language: pygrep
|
||||
entry: '^Created:(?:(?! +([0-2][0-9]|(3[01]))-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(199[0-9]|20[0-9][0-9])( \([^()]+\))?$))'
|
||||
files: '^pep-\d+\.(rst|txt)$'
|
||||
types: [text]
|
||||
- id: validate-python-version
|
||||
name: "Validate PEP Python-Version field"
|
||||
name: "Validate PEP 'Python-Version' field"
|
||||
language: pygrep
|
||||
entry: '^Python-Version:(?:(?! +( ?[1-9]\.([0-9][0-9]?|x)(\.[1-9][0-9]?)?\??,?)+( \([^()]+\))?$))'
|
||||
files: '^pep-\d+\.(rst|txt)$'
|
||||
types: [text]
|
||||
- id: validate-resolution
|
||||
name: "Validate PEP Resolution field"
|
||||
name: "Validate PEP 'Resolution' field"
|
||||
language: pygrep
|
||||
entry: '(?<!\n\n)^Resolution: (?:(?!(https:\/\/\S*|:pep:`[a-zA-Z\d \-<>#]*?`)\n))'
|
||||
args: ['--multiline']
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/env python3
|
||||
# http://legacy.python.org/dev/peps/pep-0465/
|
||||
# https://www.python.org/dev/peps/pep-0465/
|
||||
# https://gist.github.com/njsmith/9157645
|
||||
|
||||
# usage:
|
|
@ -308,7 +308,7 @@ References
|
|||
.. [2] tp_call/PyObject_Call calling convention
|
||||
https://docs.python.org/3/c-api/typeobj.html#c.PyTypeObject.tp_call
|
||||
.. [3] Using PY_VECTORCALL_ARGUMENTS_OFFSET in callee
|
||||
https://github.com/markshannon/cpython/blob/vectorcall-minimal/Objects/classobject.c#L53
|
||||
https://github.com/markshannon/cpython/blob/815cc1a30d85cdf2e3d77d21224db7055a1f07cb/Objects/classobject.c#L53
|
||||
.. [4] Argument Clinic
|
||||
https://docs.python.org/3/howto/clinic.html
|
||||
|
||||
|
|
|
@ -97,8 +97,8 @@ but also on the value of some class attributes, like the ``BinOp``
|
|||
example above. The Visitor pattern is insufficiently flexible for
|
||||
this: it can only select based on the class.
|
||||
|
||||
For a complete example, see
|
||||
https://github.com/gvanrossum/patma/blob/master/examples/expr.py#L231
|
||||
See a `complete example
|
||||
<https://github.com/gvanrossum/patma/blob/be5969442d0584005492134c3b24eea408709db2/examples/expr.py#L231>`_.
|
||||
|
||||
Like the Visitor pattern, pattern matching allows for a strict separation
|
||||
of concerns: specific actions or data processing is independent of the
|
||||
|
|
|
@ -1356,7 +1356,7 @@ they don't define ``__match_args__`` (the optimised fast path for the builtin
|
|||
and standard library types named in :pep:`634` is retained).
|
||||
|
||||
Adapting the class matching example
|
||||
`linked from PEP 635 <https://github.com/gvanrossum/patma/blob/master/examples/expr.py#L231>`_
|
||||
`linked from PEP 635 <https://github.com/gvanrossum/patma/blob/be5969442d0584005492134c3b24eea408709db2/examples/expr.py#L231>`_
|
||||
shows that for purely positional class matching, the main impact comes from the
|
||||
changes to value constraints and name binding, not from the class matching
|
||||
changes::
|
||||
|
|
|
@ -819,7 +819,7 @@ and render HTML as-is is to use functions like ``mark_safe`` in
|
|||
`Django
|
||||
<https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.safestring.mark_safe>`_
|
||||
or ``do_mark_safe`` in `Jinja2
|
||||
<https://github.com/pallets/jinja/blob/main/src/jinja2/filters.py#L1264>`_,
|
||||
<https://github.com/pallets/jinja/blob/077b7918a7642ff6742fe48a32e54d7875140894/src/jinja2/filters.py#L1264>`_,
|
||||
which cause XSS vulnerabilities:
|
||||
|
||||
::
|
||||
|
|
Loading…
Reference in New Issue