Compare commits
57 Commits
editables-
...
cjm/displa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
222805e210 | ||
|
|
2d3914296d | ||
|
|
7571da8778 | ||
|
|
2ceac5f868 | ||
|
|
5ce80827d2 | ||
|
|
e047b9685a | ||
|
|
fc16d8d04d | ||
|
|
175e5d7b88 | ||
|
|
c03f257ed7 | ||
|
|
6bbb4a28c2 | ||
|
|
2ce3e3ae60 | ||
|
|
2a64cccb61 | ||
|
|
928ffd6650 | ||
|
|
e52be0951a | ||
|
|
889073578e | ||
|
|
eac965ecaf | ||
|
|
8659f2f4ea | ||
|
|
c1b292a0dc | ||
|
|
3af6ccb720 | ||
|
|
f0fc6a95fe | ||
|
|
f96a3c71ff | ||
|
|
b9b7deff17 | ||
|
|
40d9324f5a | ||
|
|
a9f8bd59b2 | ||
|
|
143e172431 | ||
|
|
b2d3a05ee4 | ||
|
|
ef1ca0dd38 | ||
|
|
c7b13bb8fc | ||
|
|
dbbe3526ef | ||
|
|
f22c8ab811 | ||
|
|
2a8f95c437 | ||
|
|
ea2d51c2bb | ||
|
|
ed238e0c76 | ||
|
|
3ace12943e | ||
|
|
978909fcf4 | ||
|
|
f8735e1ee8 | ||
|
|
d70ceb6a56 | ||
|
|
fc7d9e95b8 | ||
|
|
b578fca9cb | ||
|
|
8d3146c2b2 | ||
|
|
fa5c841154 | ||
|
|
f8fcbc19d9 | ||
|
|
97fdd48208 | ||
|
|
731ed2e40b | ||
|
|
3a742c17f8 | ||
|
|
053243635c | ||
|
|
82355712c3 | ||
|
|
4bc73dd87e | ||
|
|
53b84ab054 | ||
|
|
3664f85f45 | ||
|
|
2c1926beeb | ||
|
|
4bcc96ae51 | ||
|
|
c0a2b49bac | ||
|
|
ca22248628 | ||
|
|
d8cf8ac2ef | ||
|
|
1c7b84059e | ||
|
|
f82bb67555 |
4
.github/workflows/publish-docs.yml
vendored
4
.github/workflows/publish-docs.yml
vendored
@@ -104,8 +104,8 @@ jobs:
|
||||
run: |
|
||||
branch_name="${{ env.branch_name }}"
|
||||
|
||||
git config user.name "$GITHUB_ACTOR"
|
||||
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||
git config user.name "astral-docs-bot"
|
||||
git config user.email "176161322+astral-docs-bot@users.noreply.github.com"
|
||||
|
||||
git checkout -b $branch_name
|
||||
git add site/ruff
|
||||
|
||||
@@ -9,7 +9,8 @@ exclude: |
|
||||
crates/ruff_python_formatter/resources/.*|
|
||||
crates/ruff_python_formatter/tests/snapshots/.*|
|
||||
crates/ruff_python_resolver/resources/.*|
|
||||
crates/ruff_python_resolver/tests/snapshots/.*
|
||||
crates/ruff_python_resolver/tests/snapshots/.*|
|
||||
crates/red_knot/resources/.*
|
||||
)$
|
||||
|
||||
repos:
|
||||
@@ -56,18 +57,13 @@ repos:
|
||||
pass_filenames: false # This makes it a lot faster
|
||||
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.5.2
|
||||
rev: v0.5.4
|
||||
hooks:
|
||||
- id: ruff-format
|
||||
- id: ruff
|
||||
args: [--fix, --exit-non-zero-on-fix]
|
||||
types_or: [python, pyi]
|
||||
require_serial: true
|
||||
exclude: |
|
||||
(?x)^(
|
||||
crates/ruff_linter/resources/.*|
|
||||
crates/ruff_python_formatter/resources/.*
|
||||
)$
|
||||
|
||||
# Prettier
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
|
||||
52
CHANGELOG.md
52
CHANGELOG.md
@@ -1,5 +1,57 @@
|
||||
# Changelog
|
||||
|
||||
## 0.5.5
|
||||
|
||||
### Preview features
|
||||
|
||||
- \[`fastapi`\] Implement `fastapi-redundant-response-model` (`FAST001`) and `fastapi-non-annotated-dependency`(`FAST002`) ([#11579](https://github.com/astral-sh/ruff/pull/11579))
|
||||
- \[`pydoclint`\] Implement `docstring-missing-exception` (`DOC501`) and `docstring-extraneous-exception` (`DOC502`) ([#11471](https://github.com/astral-sh/ruff/pull/11471))
|
||||
|
||||
### Rule changes
|
||||
|
||||
- \[`numpy`\] Fix NumPy 2.0 rule for `np.alltrue` and `np.sometrue` ([#12473](https://github.com/astral-sh/ruff/pull/12473))
|
||||
- \[`numpy`\] Ignore `NPY201` inside `except` blocks for compatibility with older numpy versions ([#12490](https://github.com/astral-sh/ruff/pull/12490))
|
||||
- \[`pep8-naming`\] Avoid applying `ignore-names` to `self` and `cls` function names (`N804`, `N805`) ([#12497](https://github.com/astral-sh/ruff/pull/12497))
|
||||
|
||||
### Formatter
|
||||
|
||||
- Fix incorrect placement of leading function comment with type params ([#12447](https://github.com/astral-sh/ruff/pull/12447))
|
||||
|
||||
### Server
|
||||
|
||||
- Do not bail code action resolution when a quick fix is requested ([#12462](https://github.com/astral-sh/ruff/pull/12462))
|
||||
|
||||
### Bug fixes
|
||||
|
||||
- Fix `Ord` implementation of `cmp_fix` ([#12471](https://github.com/astral-sh/ruff/pull/12471))
|
||||
- Raise syntax error for unparenthesized generator expression in multi-argument call ([#12445](https://github.com/astral-sh/ruff/pull/12445))
|
||||
- \[`pydoclint`\] Fix panic in `DOC501` reported in [#12428](https://github.com/astral-sh/ruff/pull/12428) ([#12435](https://github.com/astral-sh/ruff/pull/12435))
|
||||
- \[`flake8-bugbear`\] Allow singleton tuples with starred expressions in `B013` ([#12484](https://github.com/astral-sh/ruff/pull/12484))
|
||||
|
||||
### Documentation
|
||||
|
||||
- Add Eglot setup guide for Emacs editor ([#12426](https://github.com/astral-sh/ruff/pull/12426))
|
||||
- Add note about the breaking change in `nvim-lspconfig` ([#12507](https://github.com/astral-sh/ruff/pull/12507))
|
||||
- Add note to include notebook files for native server ([#12449](https://github.com/astral-sh/ruff/pull/12449))
|
||||
- Add setup docs for Zed editor ([#12501](https://github.com/astral-sh/ruff/pull/12501))
|
||||
|
||||
## 0.5.4
|
||||
|
||||
### Rule changes
|
||||
|
||||
- \[`ruff`\] Rename `RUF007` to `zip-instead-of-pairwise` ([#12399](https://github.com/astral-sh/ruff/pull/12399))
|
||||
|
||||
### Bug fixes
|
||||
|
||||
- \[`flake8-builtins`\] Avoid shadowing diagnostics for `@override` methods ([#12415](https://github.com/astral-sh/ruff/pull/12415))
|
||||
- \[`flake8-comprehensions`\] Insert parentheses for multi-argument generators ([#12422](https://github.com/astral-sh/ruff/pull/12422))
|
||||
- \[`pydocstyle`\] Handle escaped docstrings within docstring (`D301`) ([#12192](https://github.com/astral-sh/ruff/pull/12192))
|
||||
|
||||
### Documentation
|
||||
|
||||
- Fix GitHub link to Neovim setup ([#12410](https://github.com/astral-sh/ruff/pull/12410))
|
||||
- Fix `output-format` default in settings reference ([#12409](https://github.com/astral-sh/ruff/pull/12409))
|
||||
|
||||
## 0.5.3
|
||||
|
||||
**Ruff 0.5.3 marks the stable release of the Ruff language server and introduces revamped
|
||||
|
||||
@@ -905,7 +905,7 @@ There are three ways in which an import can be categorized as "first-party":
|
||||
package (e.g., `from foo import bar` or `import foo.bar`), they'll be classified as first-party
|
||||
automatically. This check is as simple as comparing the first segment of the current file's
|
||||
module path to the first segment of the import.
|
||||
1. **Source roots**: Ruff supports a `[src](https://docs.astral.sh/ruff/settings/#src)` setting, which
|
||||
1. **Source roots**: Ruff supports a [`src`](https://docs.astral.sh/ruff/settings/#src) setting, which
|
||||
sets the directories to scan when identifying first-party imports. The algorithm is
|
||||
straightforward: given an import, like `import foo`, iterate over the directories enumerated in
|
||||
the `src` setting and, for each directory, check for the existence of a subdirectory `foo` or a
|
||||
|
||||
42
Cargo.lock
generated
42
Cargo.lock
generated
@@ -1866,6 +1866,7 @@ dependencies = [
|
||||
"ruff_python_ast",
|
||||
"rustc-hash 2.0.0",
|
||||
"salsa",
|
||||
"tempfile",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
"tracing-tree",
|
||||
@@ -1897,6 +1898,7 @@ version = "0.0.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bitflags 2.6.0",
|
||||
"countme",
|
||||
"hashbrown",
|
||||
"ordermap",
|
||||
"red_knot_module_resolver",
|
||||
@@ -1904,7 +1906,6 @@ dependencies = [
|
||||
"ruff_index",
|
||||
"ruff_python_ast",
|
||||
"ruff_python_parser",
|
||||
"ruff_python_trivia",
|
||||
"ruff_text_size",
|
||||
"rustc-hash 2.0.0",
|
||||
"salsa",
|
||||
@@ -1992,7 +1993,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ruff"
|
||||
version = "0.5.3"
|
||||
version = "0.5.5"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"argfile",
|
||||
@@ -2091,6 +2092,7 @@ dependencies = [
|
||||
"ruff_notebook",
|
||||
"ruff_python_ast",
|
||||
"ruff_python_parser",
|
||||
"ruff_python_trivia",
|
||||
"ruff_source_file",
|
||||
"ruff_text_size",
|
||||
"rustc-hash 2.0.0",
|
||||
@@ -2176,7 +2178,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ruff_linter"
|
||||
version = "0.5.3"
|
||||
version = "0.5.5"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"annotate-snippets 0.9.2",
|
||||
@@ -2491,7 +2493,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ruff_wasm"
|
||||
version = "0.5.3"
|
||||
version = "0.5.5"
|
||||
dependencies = [
|
||||
"console_error_panic_hook",
|
||||
"console_log",
|
||||
@@ -2910,9 +2912,9 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.71"
|
||||
version = "2.0.72"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462"
|
||||
checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -3000,18 +3002,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.62"
|
||||
version = "1.0.63"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb"
|
||||
checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.62"
|
||||
version = "1.0.63"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c"
|
||||
checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@@ -3075,9 +3077,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.8.14"
|
||||
version = "0.8.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335"
|
||||
checksum = "ac2caab0bf757388c6c0ae23b3293fdb463fee59434529014f85e3263b995c28"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_spanned",
|
||||
@@ -3096,9 +3098,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "toml_edit"
|
||||
version = "0.22.14"
|
||||
version = "0.22.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38"
|
||||
checksum = "278f3d518e152219c994ce877758516bca5e118eaed6996192a774fb9fbf0788"
|
||||
dependencies = [
|
||||
"indexmap",
|
||||
"serde",
|
||||
@@ -3183,9 +3185,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tracing-tree"
|
||||
version = "0.3.1"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b56c62d2c80033cb36fae448730a2f2ef99410fe3ecbffc916681a32f6807dbe"
|
||||
checksum = "f459ca79f1b0d5f71c54ddfde6debfc59c8b6eeb46808ae492077f739dc7b49c"
|
||||
dependencies = [
|
||||
"nu-ansi-term 0.50.0",
|
||||
"tracing-core",
|
||||
@@ -3338,9 +3340,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
|
||||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "1.9.1"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439"
|
||||
checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
|
||||
dependencies = [
|
||||
"getrandom",
|
||||
"rand",
|
||||
@@ -3350,9 +3352,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "uuid-macro-internal"
|
||||
version = "1.9.1"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a3ff64d5cde1e2cb5268bdb497235b6bd255ba8244f910dbc3574e59593de68c"
|
||||
checksum = "ee1cd046f83ea2c4e920d6ee9f7c3537ef928d75dce5d84a87c2c5d6b3999a3a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
||||
@@ -133,7 +133,7 @@ toml = { version = "0.8.11" }
|
||||
tracing = { version = "0.1.40" }
|
||||
tracing-indicatif = { version = "0.3.6" }
|
||||
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
|
||||
tracing-tree = { version = "0.3.0" }
|
||||
tracing-tree = { version = "0.4.0" }
|
||||
typed-arena = { version = "2.0.2" }
|
||||
unic-ucd-category = { version = "0.9" }
|
||||
unicode-ident = { version = "1.0.12" }
|
||||
|
||||
25
LICENSE
25
LICENSE
@@ -1371,3 +1371,28 @@ are:
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
"""
|
||||
|
||||
- pydoclint, licensed as follows:
|
||||
"""
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 jsh9
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
"""
|
||||
|
||||
@@ -136,8 +136,8 @@ curl -LsSf https://astral.sh/ruff/install.sh | sh
|
||||
powershell -c "irm https://astral.sh/ruff/install.ps1 | iex"
|
||||
|
||||
# For a specific version.
|
||||
curl -LsSf https://astral.sh/ruff/0.5.3/install.sh | sh
|
||||
powershell -c "irm https://astral.sh/ruff/0.5.3/install.ps1 | iex"
|
||||
curl -LsSf https://astral.sh/ruff/0.5.5/install.sh | sh
|
||||
powershell -c "irm https://astral.sh/ruff/0.5.5/install.ps1 | iex"
|
||||
```
|
||||
|
||||
You can also install Ruff via [Homebrew](https://formulae.brew.sh/formula/ruff), [Conda](https://anaconda.org/conda-forge/ruff),
|
||||
@@ -170,7 +170,7 @@ Ruff can also be used as a [pre-commit](https://pre-commit.com/) hook via [`ruff
|
||||
```yaml
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
# Ruff version.
|
||||
rev: v0.5.3
|
||||
rev: v0.5.5
|
||||
hooks:
|
||||
# Run the linter.
|
||||
- id: ruff
|
||||
@@ -434,6 +434,7 @@ Ruff is used by a number of major open-source projects and companies, including:
|
||||
- Hugging Face ([Transformers](https://github.com/huggingface/transformers),
|
||||
[Datasets](https://github.com/huggingface/datasets),
|
||||
[Diffusers](https://github.com/huggingface/diffusers))
|
||||
- IBM ([Qiskit](https://github.com/Qiskit/qiskit))
|
||||
- ING Bank ([popmon](https://github.com/ing-bank/popmon), [probatus](https://github.com/ing-bank/probatus))
|
||||
- [Ibis](https://github.com/ibis-project/ibis)
|
||||
- [ivy](https://github.com/unifyai/ivy)
|
||||
|
||||
@@ -31,6 +31,9 @@ tracing = { workspace = true }
|
||||
tracing-subscriber = { workspace = true }
|
||||
tracing-tree = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = { workspace = true }
|
||||
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
5
crates/red_knot/resources/test/corpus/00_const.py
Normal file
5
crates/red_knot/resources/test/corpus/00_const.py
Normal file
@@ -0,0 +1,5 @@
|
||||
None
|
||||
False
|
||||
True
|
||||
Ellipsis
|
||||
...
|
||||
0
crates/red_knot/resources/test/corpus/00_empty.py
Normal file
0
crates/red_knot/resources/test/corpus/00_empty.py
Normal file
4
crates/red_knot/resources/test/corpus/00_expr_discard.py
Normal file
4
crates/red_knot/resources/test/corpus/00_expr_discard.py
Normal file
@@ -0,0 +1,4 @@
|
||||
"str"
|
||||
1
|
||||
1.1
|
||||
b"bin"
|
||||
1
crates/red_knot/resources/test/corpus/00_expr_var1.py
Normal file
1
crates/red_knot/resources/test/corpus/00_expr_var1.py
Normal file
@@ -0,0 +1 @@
|
||||
a
|
||||
4
crates/red_knot/resources/test/corpus/01_expr_unary.py
Normal file
4
crates/red_knot/resources/test/corpus/01_expr_unary.py
Normal file
@@ -0,0 +1,4 @@
|
||||
-a
|
||||
~a
|
||||
+a
|
||||
not a
|
||||
2
crates/red_knot/resources/test/corpus/02_expr_attr.py
Normal file
2
crates/red_knot/resources/test/corpus/02_expr_attr.py
Normal file
@@ -0,0 +1,2 @@
|
||||
a.b
|
||||
a.b.c.d
|
||||
@@ -0,0 +1,3 @@
|
||||
foo(
|
||||
bar=1
|
||||
).attr
|
||||
@@ -0,0 +1,3 @@
|
||||
foo(
|
||||
bar=1
|
||||
).attr = 1
|
||||
@@ -0,0 +1,6 @@
|
||||
a or b or c
|
||||
a and b and c
|
||||
|
||||
a or b and c
|
||||
|
||||
#a and b or c
|
||||
14
crates/red_knot/resources/test/corpus/02_expr_binary.py
Normal file
14
crates/red_knot/resources/test/corpus/02_expr_binary.py
Normal file
@@ -0,0 +1,14 @@
|
||||
a + b
|
||||
a - b
|
||||
a * b
|
||||
a @ b
|
||||
a / b
|
||||
a // b
|
||||
a % b
|
||||
a ** b
|
||||
|
||||
a << b
|
||||
a >> b
|
||||
a | b
|
||||
a ^ b
|
||||
a & b
|
||||
@@ -0,0 +1,6 @@
|
||||
x == y or (
|
||||
x is not None and x == z
|
||||
)
|
||||
|
||||
x == y or \
|
||||
x <= 65 or x >= 102
|
||||
@@ -0,0 +1,5 @@
|
||||
(
|
||||
(a and aa) or
|
||||
(b and bb) or
|
||||
(c and cc)
|
||||
)
|
||||
10
crates/red_knot/resources/test/corpus/02_expr_rel.py
Normal file
10
crates/red_knot/resources/test/corpus/02_expr_rel.py
Normal file
@@ -0,0 +1,10 @@
|
||||
a == b
|
||||
a != b
|
||||
a < b
|
||||
a <= b
|
||||
a > b
|
||||
a >= b
|
||||
a is b
|
||||
a is not b
|
||||
a in b
|
||||
a not in b
|
||||
@@ -0,0 +1,2 @@
|
||||
a == b == 0
|
||||
0 < a < 10
|
||||
2
crates/red_knot/resources/test/corpus/02_expr_subscr.py
Normal file
2
crates/red_knot/resources/test/corpus/02_expr_subscr.py
Normal file
@@ -0,0 +1,2 @@
|
||||
a[b]
|
||||
a[b][c]
|
||||
1
crates/red_knot/resources/test/corpus/03_dict.py
Normal file
1
crates/red_knot/resources/test/corpus/03_dict.py
Normal file
@@ -0,0 +1 @@
|
||||
{a: 1, b:2}
|
||||
1
crates/red_knot/resources/test/corpus/03_dict_ex.py
Normal file
1
crates/red_knot/resources/test/corpus/03_dict_ex.py
Normal file
@@ -0,0 +1 @@
|
||||
{1: 2, **a, 3: 4, 5: 6}
|
||||
@@ -0,0 +1,20 @@
|
||||
DATA = {
|
||||
'a': 1,
|
||||
'b': 1,
|
||||
'c': 1,
|
||||
'd': 1,
|
||||
'e': 1,
|
||||
'f': 1,
|
||||
'g': 1,
|
||||
'h': 1,
|
||||
'i': 1,
|
||||
'j': 1,
|
||||
'k': 1,
|
||||
'l': 1,
|
||||
'm': 1,
|
||||
'n': 1,
|
||||
'o': 1,
|
||||
'p': 1,
|
||||
'q': 1,
|
||||
'r': 1,
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
{**{0:1},**{1:2},**{2:3},**{3:4},**{4:5},**{5:6},**{6:7},**{7:8},**{8:9},**{9:10},**{10:11},**{11:12},**{12:13},**{13:14},**{14:15},**{15:16},**{16:17},**{17:18},**{18:19},**{19:20},**{20:21},**{21:22},**{22:23},**{23:24},**{24:25},**{25:26},**{26:27},**{27:28},**{28:29},**{29:30},**{30:31},**{31:32},**{32:33},**{33:34},**{34:35},**{35:36},**{36:37},**{37:38},**{38:39},**{39:40},**{40:41},**{41:42},**{42:43},**{43:44},**{44:45},**{45:46},**{46:47},**{47:48},**{48:49},**{49:50},**{50:51},**{51:52},**{52:53},**{53:54},**{54:55},**{55:56},**{56:57},**{57:58},**{58:59},**{59:60},**{60:61},**{61:62},**{62:63},**{63:64},**{64:65},**{65:66},**{66:67},**{67:68},**{68:69},**{69:70},**{70:71},**{71:72},**{72:73},**{73:74},**{74:75},**{75:76},**{76:77},**{77:78},**{78:79},**{79:80},**{80:81},**{81:82},**{82:83},**{83:84},**{84:85},**{85:86},**{86:87},**{87:88},**{88:89},**{89:90},**{90:91},**{91:92},**{92:93},**{93:94},**{94:95},**{95:96},**{96:97},**{97:98},**{98:99},**{99:100},**{100:101},**{101:102},**{102:103},**{103:104},**{104:105},**{105:106},**{106:107},**{107:108},**{108:109},**{109:110},**{110:111},**{111:112},**{112:113},**{113:114},**{114:115},**{115:116},**{116:117},**{117:118},**{118:119},**{119:120},**{120:121},**{121:122},**{122:123},**{123:124},**{124:125},**{125:126},**{126:127},**{127:128},**{128:129},**{129:130},**{130:131},**{131:132},**{132:133},**{133:134},**{134:135},**{135:136},**{136:137},**{137:138},**{138:139},**{139:140},**{140:141},**{141:142},**{142:143},**{143:144},**{144:145},**{145:146},**{146:147},**{147:148},**{148:149},**{149:150},**{150:151},**{151:152},**{152:153},**{153:154},**{154:155},**{155:156},**{156:157},**{157:158},**{158:159},**{159:160},**{160:161},**{161:162},**{162:163},**{163:164},**{164:165},**{165:166},**{166:167},**{167:168},**{168:169},**{169:170},**{170:171},**{171:172},**{172:173},**{173:174},**{174:175},**{175:176},**{176:177},**{177:178},**{178:179},**{179:180},**{180:181},**{181:182},**{182:183},**{183:184},**{184:185},**{185:186},**{186:187},**{187:188},**{188:189},**{189:190},**{190:191},**{191:192},**{192:193},**{193:194},**{194:195},**{195:196},**{196:197},**{197:198},**{198:199},**{199:200},**{200:201},**{201:202},**{202:203},**{203:204},**{204:205},**{205:206},**{206:207},**{207:208},**{208:209},**{209:210},**{210:211},**{211:212},**{212:213},**{213:214},**{214:215},**{215:216},**{216:217},**{217:218},**{218:219},**{219:220},**{220:221},**{221:222},**{222:223},**{223:224},**{224:225},**{225:226},**{226:227},**{227:228},**{228:229},**{229:230},**{230:231},**{231:232},**{232:233},**{233:234},**{234:235},**{235:236},**{236:237},**{237:238},**{238:239},**{239:240},**{240:241},**{241:242},**{242:243},**{243:244},**{244:245},**{245:246},**{246:247},**{247:248},**{248:249},**{249:250},**{250:251},**{251:252},**{252:253},**{253:254},**{254:255},**{255:256},**{256:257},**{257:258},**{258:259},**{259:260}}
|
||||
|
||||
1
crates/red_knot/resources/test/corpus/03_list.py
Normal file
1
crates/red_knot/resources/test/corpus/03_list.py
Normal file
@@ -0,0 +1 @@
|
||||
[a, b]
|
||||
1
crates/red_knot/resources/test/corpus/03_list_ex.py
Normal file
1
crates/red_knot/resources/test/corpus/03_list_ex.py
Normal file
@@ -0,0 +1 @@
|
||||
[a, *b, *d, a, c]
|
||||
1
crates/red_knot/resources/test/corpus/03_list_large.py
Normal file
1
crates/red_knot/resources/test/corpus/03_list_large.py
Normal file
@@ -0,0 +1 @@
|
||||
l = [a, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]
|
||||
1
crates/red_knot/resources/test/corpus/03_set.py
Normal file
1
crates/red_knot/resources/test/corpus/03_set.py
Normal file
@@ -0,0 +1 @@
|
||||
{a, b}
|
||||
38
crates/red_knot/resources/test/corpus/03_set_multi.py
Normal file
38
crates/red_knot/resources/test/corpus/03_set_multi.py
Normal file
@@ -0,0 +1,38 @@
|
||||
d = {
|
||||
0: {
|
||||
"en",
|
||||
"es",
|
||||
"zh",
|
||||
"ja",
|
||||
"de",
|
||||
"fr",
|
||||
"ru",
|
||||
"ar",
|
||||
"pt",
|
||||
"fa",
|
||||
"tr",
|
||||
"ko",
|
||||
"id",
|
||||
None,
|
||||
(1, "2"),
|
||||
(1, 2),
|
||||
},
|
||||
1: {
|
||||
"en",
|
||||
"de",
|
||||
"fr",
|
||||
"ar",
|
||||
"pt",
|
||||
"ja",
|
||||
"zh",
|
||||
"ru",
|
||||
None,
|
||||
"es",
|
||||
"fa",
|
||||
"tr",
|
||||
"ko",
|
||||
"id",
|
||||
(1, "2"),
|
||||
(1, 2),
|
||||
},
|
||||
}
|
||||
6
crates/red_knot/resources/test/corpus/03_slice.py
Normal file
6
crates/red_knot/resources/test/corpus/03_slice.py
Normal file
@@ -0,0 +1,6 @@
|
||||
arr[a:b]
|
||||
arr[a:b:c]
|
||||
arr[a:]
|
||||
arr[:b]
|
||||
arr[:]
|
||||
arr[::2]
|
||||
1
crates/red_knot/resources/test/corpus/03_slice_ext.py
Normal file
1
crates/red_knot/resources/test/corpus/03_slice_ext.py
Normal file
@@ -0,0 +1 @@
|
||||
arr[a:b, c:d]
|
||||
2
crates/red_knot/resources/test/corpus/03_tuple.py
Normal file
2
crates/red_knot/resources/test/corpus/03_tuple.py
Normal file
@@ -0,0 +1,2 @@
|
||||
(a,)
|
||||
(b, c)
|
||||
2
crates/red_knot/resources/test/corpus/03_tuple_ex.py
Normal file
2
crates/red_knot/resources/test/corpus/03_tuple_ex.py
Normal file
@@ -0,0 +1,2 @@
|
||||
(*b,)
|
||||
(*b, c)
|
||||
4
crates/red_knot/resources/test/corpus/04_assign.py
Normal file
4
crates/red_knot/resources/test/corpus/04_assign.py
Normal file
@@ -0,0 +1,4 @@
|
||||
a = 1
|
||||
b = "foo"
|
||||
c = (d, e)
|
||||
di = {f: 1, g: 2}
|
||||
2
crates/red_knot/resources/test/corpus/04_assign_attr.py
Normal file
2
crates/red_knot/resources/test/corpus/04_assign_attr.py
Normal file
@@ -0,0 +1,2 @@
|
||||
a.b = 1
|
||||
a.b.c.d = 2
|
||||
@@ -0,0 +1,2 @@
|
||||
def foo():
|
||||
a.b = 1
|
||||
@@ -0,0 +1 @@
|
||||
a[b] = 1
|
||||
@@ -0,0 +1,2 @@
|
||||
a, b = c
|
||||
[a, b] = c
|
||||
@@ -0,0 +1,4 @@
|
||||
a, *b = c
|
||||
*a, b = c
|
||||
a, *b, c, d = e
|
||||
[a, *b, c] = d
|
||||
@@ -0,0 +1,5 @@
|
||||
a, = x,
|
||||
a, b = x, y
|
||||
a, b, c = x, y, z
|
||||
a, b, c, d = w, x, y, z
|
||||
a, b = 1, 2
|
||||
14
crates/red_knot/resources/test/corpus/04_aug_assign.py
Normal file
14
crates/red_knot/resources/test/corpus/04_aug_assign.py
Normal file
@@ -0,0 +1,14 @@
|
||||
a += 1
|
||||
a -= 2
|
||||
a *= 3
|
||||
a @= 4
|
||||
a /= 5
|
||||
a //= 6
|
||||
a %= 7
|
||||
a **= 8
|
||||
|
||||
a <<= b
|
||||
a >>= b
|
||||
a |= b
|
||||
a ^= b
|
||||
a &= b
|
||||
@@ -0,0 +1,6 @@
|
||||
(
|
||||
o.
|
||||
a
|
||||
) += (
|
||||
v
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
a.b -= 2
|
||||
a[0] += 1
|
||||
a[0:2] += 1
|
||||
1
crates/red_knot/resources/test/corpus/05_funcall.py
Normal file
1
crates/red_knot/resources/test/corpus/05_funcall.py
Normal file
@@ -0,0 +1 @@
|
||||
fun()
|
||||
1
crates/red_knot/resources/test/corpus/05_funcall_1.py
Normal file
1
crates/red_knot/resources/test/corpus/05_funcall_1.py
Normal file
@@ -0,0 +1 @@
|
||||
fun(a)
|
||||
1
crates/red_knot/resources/test/corpus/05_funcall_2.py
Normal file
1
crates/red_knot/resources/test/corpus/05_funcall_2.py
Normal file
@@ -0,0 +1 @@
|
||||
fun(a, b)
|
||||
@@ -0,0 +1,2 @@
|
||||
a = (x,
|
||||
foo(y))
|
||||
1
crates/red_knot/resources/test/corpus/05_funcall_kw.py
Normal file
1
crates/red_knot/resources/test/corpus/05_funcall_kw.py
Normal file
@@ -0,0 +1 @@
|
||||
fun(a=a, kw=2)
|
||||
18
crates/red_knot/resources/test/corpus/05_funcall_kw_many.py
Normal file
18
crates/red_knot/resources/test/corpus/05_funcall_kw_many.py
Normal file
@@ -0,0 +1,18 @@
|
||||
foo(
|
||||
a=1,
|
||||
b=1,
|
||||
c=1,
|
||||
d=1,
|
||||
e=1,
|
||||
f=1,
|
||||
g=1,
|
||||
h=1,
|
||||
i=1,
|
||||
j=1,
|
||||
k=1,
|
||||
l=1,
|
||||
m=1,
|
||||
n=1,
|
||||
o=1,
|
||||
p=1,
|
||||
)
|
||||
@@ -0,0 +1 @@
|
||||
fun(var, 10, a=a, kw=2)
|
||||
@@ -0,0 +1,2 @@
|
||||
("foo"
|
||||
.format())
|
||||
@@ -0,0 +1,2 @@
|
||||
c = {a: 1, b: 2}
|
||||
fun(a, b, **c)
|
||||
@@ -0,0 +1,32 @@
|
||||
C.meth(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
d,
|
||||
e,
|
||||
f,
|
||||
g,
|
||||
h,
|
||||
i,
|
||||
j,
|
||||
k,
|
||||
l,
|
||||
m,
|
||||
n,
|
||||
o,
|
||||
p,
|
||||
q,
|
||||
r,
|
||||
s,
|
||||
t,
|
||||
u,
|
||||
v,
|
||||
w,
|
||||
x,
|
||||
y,
|
||||
z,
|
||||
aa,
|
||||
bb,
|
||||
cc,
|
||||
dd,
|
||||
)
|
||||
@@ -0,0 +1,3 @@
|
||||
fun(*b, c)
|
||||
fun(a, *b, c)
|
||||
fun(a, *b, c, *d)
|
||||
@@ -0,0 +1,2 @@
|
||||
c = (a, b)
|
||||
fun(a, b, *c)
|
||||
@@ -0,0 +1,3 @@
|
||||
c = (a, b)
|
||||
d = {e: 1, f: 2}
|
||||
fun(a, b, *c, **d)
|
||||
@@ -0,0 +1,10 @@
|
||||
fun(a, kw=1, *c, **d)
|
||||
fun(a, *c, kw=1, **d)
|
||||
|
||||
fun(a, kw=1, *c)
|
||||
fun(a, *c, kw=1)
|
||||
|
||||
fun(a, *c)
|
||||
|
||||
# Introduced in Python3.5, not supported yet
|
||||
#fun(*c, a)
|
||||
2
crates/red_knot/resources/test/corpus/07_ifexpr.py
Normal file
2
crates/red_knot/resources/test/corpus/07_ifexpr.py
Normal file
@@ -0,0 +1,2 @@
|
||||
a if b else c
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
(
|
||||
x,
|
||||
a if b else c
|
||||
)
|
||||
@@ -0,0 +1,7 @@
|
||||
a = (
|
||||
(
|
||||
b()
|
||||
)
|
||||
if c
|
||||
else d
|
||||
)
|
||||
3
crates/red_knot/resources/test/corpus/08_del.py
Normal file
3
crates/red_knot/resources/test/corpus/08_del.py
Normal file
@@ -0,0 +1,3 @@
|
||||
del a
|
||||
del a[0]
|
||||
del a.b
|
||||
2
crates/red_knot/resources/test/corpus/08_del_multi.py
Normal file
2
crates/red_knot/resources/test/corpus/08_del_multi.py
Normal file
@@ -0,0 +1,2 @@
|
||||
del (a, b, c)
|
||||
del [a, b, c]
|
||||
1
crates/red_knot/resources/test/corpus/09_pass.py
Normal file
1
crates/red_knot/resources/test/corpus/09_pass.py
Normal file
@@ -0,0 +1 @@
|
||||
pass
|
||||
2
crates/red_knot/resources/test/corpus/10_if.py
Normal file
2
crates/red_knot/resources/test/corpus/10_if.py
Normal file
@@ -0,0 +1,2 @@
|
||||
if a:
|
||||
b
|
||||
@@ -0,0 +1,2 @@
|
||||
if 0 < x < 10:
|
||||
pass
|
||||
28
crates/red_knot/resources/test/corpus/10_if_false.py
Normal file
28
crates/red_knot/resources/test/corpus/10_if_false.py
Normal file
@@ -0,0 +1,28 @@
|
||||
if 0:
|
||||
a
|
||||
|
||||
if False:
|
||||
b
|
||||
|
||||
if None:
|
||||
c
|
||||
|
||||
if "":
|
||||
d
|
||||
|
||||
if 0:
|
||||
e.f
|
||||
g.h()
|
||||
i.j = 1
|
||||
del k.l
|
||||
import m
|
||||
from n import o
|
||||
p = 1
|
||||
|
||||
def f():
|
||||
if 0:
|
||||
q = 1
|
||||
r.s = 1
|
||||
t
|
||||
import u
|
||||
v = u.w()
|
||||
8
crates/red_knot/resources/test/corpus/10_if_true.py
Normal file
8
crates/red_knot/resources/test/corpus/10_if_true.py
Normal file
@@ -0,0 +1,8 @@
|
||||
if 1:
|
||||
a
|
||||
|
||||
if True:
|
||||
b
|
||||
|
||||
if "foo":
|
||||
c
|
||||
4
crates/red_knot/resources/test/corpus/11_if_else.py
Normal file
4
crates/red_knot/resources/test/corpus/11_if_else.py
Normal file
@@ -0,0 +1,4 @@
|
||||
if a:
|
||||
b
|
||||
else:
|
||||
c
|
||||
@@ -0,0 +1,12 @@
|
||||
if a:
|
||||
if b:
|
||||
if c:
|
||||
for x in y:
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
else:
|
||||
pass
|
||||
foo()
|
||||
@@ -0,0 +1,4 @@
|
||||
if False:
|
||||
b
|
||||
else:
|
||||
c
|
||||
4
crates/red_knot/resources/test/corpus/11_if_else_true.py
Normal file
4
crates/red_knot/resources/test/corpus/11_if_else_true.py
Normal file
@@ -0,0 +1,4 @@
|
||||
if True:
|
||||
b
|
||||
else:
|
||||
c
|
||||
4
crates/red_knot/resources/test/corpus/12_if_elif.py
Normal file
4
crates/red_knot/resources/test/corpus/12_if_elif.py
Normal file
@@ -0,0 +1,4 @@
|
||||
if a:
|
||||
b
|
||||
elif c:
|
||||
d
|
||||
6
crates/red_knot/resources/test/corpus/12_if_elif_else.py
Normal file
6
crates/red_knot/resources/test/corpus/12_if_elif_else.py
Normal file
@@ -0,0 +1,6 @@
|
||||
if a:
|
||||
b
|
||||
elif c:
|
||||
d
|
||||
else:
|
||||
e
|
||||
12
crates/red_knot/resources/test/corpus/13_ifelse_complex1.py
Normal file
12
crates/red_knot/resources/test/corpus/13_ifelse_complex1.py
Normal file
@@ -0,0 +1,12 @@
|
||||
if py2:
|
||||
a
|
||||
else:
|
||||
b
|
||||
|
||||
if var:
|
||||
c
|
||||
else:
|
||||
if py3:
|
||||
d
|
||||
else:
|
||||
e
|
||||
8
crates/red_knot/resources/test/corpus/13_ifelse_many.py
Normal file
8
crates/red_knot/resources/test/corpus/13_ifelse_many.py
Normal file
@@ -0,0 +1,8 @@
|
||||
if a:
|
||||
a1
|
||||
elif b:
|
||||
b1
|
||||
elif c:
|
||||
c1
|
||||
elif d:
|
||||
d1
|
||||
2
crates/red_knot/resources/test/corpus/15_while.py
Normal file
2
crates/red_knot/resources/test/corpus/15_while.py
Normal file
@@ -0,0 +1,2 @@
|
||||
while a:
|
||||
b
|
||||
2
crates/red_knot/resources/test/corpus/15_while_break.py
Normal file
2
crates/red_knot/resources/test/corpus/15_while_break.py
Normal file
@@ -0,0 +1,2 @@
|
||||
while a:
|
||||
break
|
||||
@@ -0,0 +1,5 @@
|
||||
while a:
|
||||
try:
|
||||
continue
|
||||
finally:
|
||||
break
|
||||
@@ -0,0 +1,4 @@
|
||||
while a:
|
||||
if x:
|
||||
break
|
||||
y = 1
|
||||
@@ -0,0 +1,7 @@
|
||||
while a:
|
||||
try:
|
||||
x
|
||||
except:
|
||||
break
|
||||
if x:
|
||||
z = 1
|
||||
@@ -0,0 +1,2 @@
|
||||
while a:
|
||||
continue
|
||||
2
crates/red_knot/resources/test/corpus/15_while_false.py
Normal file
2
crates/red_knot/resources/test/corpus/15_while_false.py
Normal file
@@ -0,0 +1,2 @@
|
||||
while False:
|
||||
b
|
||||
@@ -0,0 +1,2 @@
|
||||
while 1:
|
||||
b
|
||||
2
crates/red_knot/resources/test/corpus/15_while_true.py
Normal file
2
crates/red_knot/resources/test/corpus/15_while_true.py
Normal file
@@ -0,0 +1,2 @@
|
||||
while True:
|
||||
b
|
||||
2
crates/red_knot/resources/test/corpus/16_for.py
Normal file
2
crates/red_knot/resources/test/corpus/16_for.py
Normal file
@@ -0,0 +1,2 @@
|
||||
for a in b:
|
||||
c
|
||||
2
crates/red_knot/resources/test/corpus/16_for_break.py
Normal file
2
crates/red_knot/resources/test/corpus/16_for_break.py
Normal file
@@ -0,0 +1,2 @@
|
||||
for a in b:
|
||||
break
|
||||
2
crates/red_knot/resources/test/corpus/16_for_continue.py
Normal file
2
crates/red_knot/resources/test/corpus/16_for_continue.py
Normal file
@@ -0,0 +1,2 @@
|
||||
for a in b:
|
||||
continue
|
||||
4
crates/red_knot/resources/test/corpus/16_for_else.py
Normal file
4
crates/red_knot/resources/test/corpus/16_for_else.py
Normal file
@@ -0,0 +1,4 @@
|
||||
for a in b:
|
||||
c
|
||||
else:
|
||||
d
|
||||
@@ -0,0 +1,2 @@
|
||||
for x in [a, b]:
|
||||
pass
|
||||
@@ -0,0 +1,8 @@
|
||||
for x in y:
|
||||
if a:
|
||||
if x:
|
||||
y
|
||||
else:
|
||||
x
|
||||
else:
|
||||
b
|
||||
3
crates/red_knot/resources/test/corpus/20_lambda.py
Normal file
3
crates/red_knot/resources/test/corpus/20_lambda.py
Normal file
@@ -0,0 +1,3 @@
|
||||
lambda x: y
|
||||
|
||||
lambda x: a and b
|
||||
1
crates/red_knot/resources/test/corpus/20_lambda_const.py
Normal file
1
crates/red_knot/resources/test/corpus/20_lambda_const.py
Normal file
@@ -0,0 +1 @@
|
||||
lambda x: y + 1
|
||||
@@ -0,0 +1 @@
|
||||
lambda x=a: y
|
||||
@@ -0,0 +1 @@
|
||||
lambda x: 0 if x else -1
|
||||
2
crates/red_knot/resources/test/corpus/21_func1.py
Normal file
2
crates/red_knot/resources/test/corpus/21_func1.py
Normal file
@@ -0,0 +1,2 @@
|
||||
def foo():
|
||||
a
|
||||
2
crates/red_knot/resources/test/corpus/21_func1_ret.py
Normal file
2
crates/red_knot/resources/test/corpus/21_func1_ret.py
Normal file
@@ -0,0 +1,2 @@
|
||||
def foo():
|
||||
return a
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user