[python] Cleanup supported/unsupported versions xmls

- Drop support for python 3.5 & 3.6 in compatibility inspection
- Fix and remove some outdated tests
- Remove xmls for long-unsupported python 2.6 & 3.5
- Regenerate versions.xml
- Remove mentions of OS-specific modules

GitOrigin-RevId: 3265dd1de8a4f7a41119e10c95bb705ca5845efe
This commit is contained in:
lada.gagina
2023-10-13 18:15:48 +02:00
committed by intellij-monorepo-bot
parent a653f3cd1f
commit 75b1ecd244
61 changed files with 170 additions and 2365 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -744,7 +744,6 @@ INSP.compatibility.feature.allow.new.lines.in.f-strings=allow new lines in expre
INSP.compatibility.feature.allow.deep.expression.nesting.in.f-strings=allow nesting expressions in format specifiers this deep
INSP.compatibility.feature.allow.backslashes.in.f-strings=allow backslashes inside expression parts of f-strings
INSP.compatibility.feature.line.comments.in.f-strings=allow comments inside expression parts of f-strings
INSP.compatibility.py35.does.not.support.yield.inside.async.functions=Python version 3.5 does not support 'yield' inside async functions
INSP.compatibility.feature.support.yield.from=support this syntax. Delegating to a subgenerator is available since Python 3.3; use explicit iteration over subgenerator instead.
INSP.compatibility.pre35.versions.do.not.allow.return.with.argument.inside.generator=Python versions < 3.3 do not allow 'return' with argument inside generator.
INSP.compatibility.feature.support.ellipsis.outside.slices=support '...' outside of sequence slicings
@@ -758,8 +757,6 @@ INSP.compatibility.positional.argument.after.keyword.argument=Positional argumen
INSP.compatibility.positional.argument.after.kwargs=Positional argument after **expression
INSP.compatibility.feature.allow.trailing.comma.after.kwargs=allow a trailing comma after **expression
INSP.compatibility.feature.allow.trailing.comma.after.positional.vararg=allow a trailing comma after *expression
INSP.compatibility.py35.does.not.support.async.inside.comprehensions.and.generator.expressions=Python version 3.5 does not support 'async' inside comprehensions and generator expressions
INSP.compatibility.py35.does.not.support.await.inside.comprehensions=Python version 3.5 does not support 'await' inside comprehensions
INSP.compatibility.feature.support.positional.only.parameters=support positional-only parameters
INSP.compatibility.support.equality.signs.in.fstrings=support equality signs in f-strings
INSP.compatibility.feature.support.assignment.expressions=support assignment expressions

View File

@@ -79,7 +79,7 @@ public class PyCompatibilityInspection extends PyInspection {
@NotNull
public static final List<LanguageLevel> SUPPORTED_LEVELS = StreamEx
.of(LanguageLevel.values())
.filter(v -> v == LanguageLevel.PYTHON27 || v.isAtLeast(LanguageLevel.PYTHON35))
.filter(v -> v == LanguageLevel.PYTHON27 || v.isAtLeast(LanguageLevel.PYTHON37))
.toImmutableList();
@NotNull

View File

@@ -14,7 +14,6 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.QualifiedName;
import com.intellij.util.ArrayUtil;
@@ -22,7 +21,6 @@ import com.intellij.util.containers.ContainerUtil;
import com.jetbrains.python.PyNames;
import com.jetbrains.python.PyPsiBundle;
import com.jetbrains.python.PyTokenTypes;
import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil;
import com.jetbrains.python.codeInsight.imports.AddImportHelper;
import com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider;
import com.jetbrains.python.inspections.quickfix.*;
@@ -37,7 +35,6 @@ import org.jetbrains.annotations.Nullable;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Stream;
/**
* User : catherine
@@ -428,25 +425,9 @@ public abstract class CompatibilityVisitor extends PyAnnotator {
@Override
public void visitPyYieldExpression(@NotNull PyYieldExpression node) {
super.visitPyYieldExpression(node);
Optional
.ofNullable(ScopeUtil.getScopeOwner(node))
.map(owner -> PyUtil.as(owner, PyFunction.class))
.filter(function -> function.isAsync() && function.isAsyncAllowed())
.ifPresent(
function -> {
if (!node.isDelegating() &&
registerForLanguageLevel(LanguageLevel.PYTHON35) &&
myVersionsToProcess.contains(LanguageLevel.PYTHON35)) {
registerProblem(node, PyPsiBundle.message("INSP.compatibility.py35.does.not.support.yield.inside.async.functions"));
}
}
);
if (!node.isDelegating()) {
return;
}
registerForAllMatchingVersions(level -> level.isPython2() && registerForLanguageLevel(level),
PyPsiBundle.message("INSP.compatibility.feature.support.yield.from"),
node);
@@ -664,32 +645,6 @@ public abstract class CompatibilityVisitor extends PyAnnotator {
@Override
public void visitPyComprehensionElement(@NotNull PyComprehensionElement node) {
super.visitPyComprehensionElement(node);
if (registerForLanguageLevel(LanguageLevel.PYTHON35) && myVersionsToProcess.contains(LanguageLevel.PYTHON35)) {
Arrays
.stream(node.getNode().getChildren(TokenSet.create(PyTokenTypes.ASYNC_KEYWORD)))
.filter(Objects::nonNull)
.map(ASTNode::getPsi)
.forEach(element -> registerProblem(element,
PyPsiBundle.message("INSP.compatibility.py35.does.not.support.async.inside.comprehensions.and.generator.expressions")));
final Stream<PyPrefixExpression> resultPrefixExpressions = PsiTreeUtil
.collectElementsOfType(node.getResultExpression(), PyPrefixExpression.class)
.stream();
final Stream<PyPrefixExpression> ifComponentsPrefixExpressions = node.getIfComponents()
.stream()
.map(ifComponent -> PsiTreeUtil.collectElementsOfType(ifComponent.getTest(), PyPrefixExpression.class))
.flatMap(Collection::stream);
Stream.concat(resultPrefixExpressions, ifComponentsPrefixExpressions)
.filter(expression -> expression.getOperator() == PyTokenTypes.AWAIT_KEYWORD && expression.getOperand() != null)
.map(expression -> expression.getNode().findChildByType(PyTokenTypes.AWAIT_KEYWORD))
.filter(Objects::nonNull)
.map(ASTNode::getPsi)
.forEach(element -> registerProblem(element,
PyPsiBundle.message("INSP.compatibility.py35.does.not.support.await.inside.comprehensions")));
}
}
@Override

View File

@@ -1,16 +0,0 @@
async def asyncgen():
<error descr="Python version 3.5 does not support 'yield' inside async functions">yield 10</error>
async def run():
{i <error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for i in asyncgen()}
[i <error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for i in asyncgen()]
{i: i ** 2 <error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for i in asyncgen()}
(i ** 2 <error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for i in asyncgen())
list(i <error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for i in asyncgen())
dataset = {data for line in gen()
<error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for data in line
if check(data)}
dataset = {data <error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for line in asyncgen()
<error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for data in line
if check(data)}

View File

@@ -1,82 +0,0 @@
async def f11(x):
y = {await<error descr="Expression expected">:</error> 10 for await<error descr="Expression expected"> </error>in []} # fail
await x
def f12(x):
y = {await: 10 for await in []}
return x
async def f21(x):
y = {mapper(await<error descr="Expression expected">)</error>: 10 for await<error descr="Expression expected"> </error>in []} # fail
await x
def f22(x):
y = {mapper(await): 10 for await in []}
return x
async def f31(x):
await<error descr="Expression expected"> </error>= [] # fail
y = {i: 10 for i in await<error descr="Expression expected">}</error> # fail
await x
def f32(x):
await = []
y = {i: 10 for i in await}
return x
async def f41(x):
y = {<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> z: 10 for z in []} # fail
await x
async def f42(x):
y = {mapper(<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> z): 10 for z in []} # fail
await x
async def f43(x):
y = {z: 10 for <error descr="Cannot assign to await expression">await z</error> in []} # fail
await x
async def f44(x):
y = {z: 10 for z in await x}
await x
async def f51():
await<error descr="Expression expected"> </error>= 5 # fail
return {await<error descr="Expression expected">:</error> 10} # fail
def f52():
await = 5
return {await: 10}
async def f61():
await<error descr="Expression expected"> </error>= 5 # fail
return {"a": 10, await<error descr="Expression expected">:</error> 10, "b": 10} # fail
def f62():
await = 5
return {"a": 10, await: 10, "b": 10}
async def f71(x):
return {await x: 10}
async def f72(x):
return {"a": 10, await x: 10, "b": 10}
async def f81(x):
{fun: <error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> fun() for fun in funcs if <error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> smth}
{fun: <error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> fun() <error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for fun in funcs if <error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> smth}

View File

@@ -30,16 +30,6 @@ def f32(x):
return x
async def f41(x):
y = (<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> z for z in []) # fail
await x
async def f42(x):
y = (mapper(<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> z) for z in []) # fail
await x
async def f43(x):
y = (z for <error descr="Cannot assign to await expression">await z</error> in []) # fail
await x

View File

@@ -1,82 +0,0 @@
async def f11(x):
y = [await<error descr="Expression expected"> </error>for await<error descr="Expression expected"> </error>in []] # fail
await x
def f12(x):
y = [await for await in []]
return x
async def f21(x):
y = [mapper(await<error descr="Expression expected">)</error> for await<error descr="Expression expected"> </error>in []] # fail
await x
def f22(x):
y = [mapper(await) for await in []]
return x
async def f31(x):
await<error descr="Expression expected"> </error>= [] # fail
y = [i for i in await<error descr="Expression expected">]</error> # fail
await x
def f32(x):
await = []
y = [i for i in await]
return x
async def f41(x):
y = [<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> z for z in []] # fail
await x
async def f42(x):
y = [mapper(<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> z) for z in []] # fail
await x
async def f43(x):
y = [z for <error descr="Cannot assign to await expression">await z</error> in []] # fail
await x
async def f44(x):
y = [z for z in await x]
await x
async def f51():
await<error descr="Expression expected"> </error>= 5 # fail
return [await<error descr="Expression expected">]</error> # fail
def f52():
await = 5
return [await]
async def f61():
await<error descr="Expression expected"> </error>= 5 # fail
return ["a", await<error descr="Expression expected">,</error> "b"] # fail
def f62():
await = 5
return ["a", await, "b"]
async def f71(x):
return [await x]
async def f72(x):
return ["a", await x, "b"]
async def f81(x):
[<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> fun() for fun in funcs if <error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> smth]
[<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> fun() <error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for fun in funcs if <error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> smth]

View File

@@ -1,82 +0,0 @@
async def f11(x):
y = {await<error descr="Expression expected"> </error>for await<error descr="Expression expected"> </error>in []} # fail
await x
def f12(x):
y = {await for await in []}
return x
async def f21(x):
y = {mapper(await<error descr="Expression expected">)</error> for await<error descr="Expression expected"> </error>in []} # fail
await x
def f22(x):
y = {mapper(await) for await in []}
return x
async def f31(x):
await<error descr="Expression expected"> </error>= [] # fail
y = {i for i in await<error descr="Expression expected">}</error> # fail
await x
def f32(x):
await = []
y = {i for i in await}
return x
async def f41(x):
y = {<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> z for z in []} # fail
await x
async def f42(x):
y = {mapper(<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> z) for z in []} # fail
await x
async def f43(x):
y = {z for <error descr="Cannot assign to await expression">await z</error> in []} # fail
await x
async def f44(x):
y = {z for z in await x}
await x
async def f51():
await<error descr="Expression expected"> </error>= 5 # fail
return {await<error descr="Expression expected">}</error> # fail
def f52():
await = 5
return {await}
async def f61():
await<error descr="Expression expected"> </error>= 5 # fail
return {"a", await<error descr="Expression expected">,</error> "b"} # fail
def f62():
await = 5
return {"a", await, "b"}
async def f71(x):
return {await x}
async def f72(x):
return {"a", await x, "b"}
async def f81(x):
{<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> fun() for fun in funcs if <error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> smth}
{<error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> fun() <error descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</error> for fun in funcs if <error descr="Python version 3.5 does not support 'await' inside comprehensions">await</error> smth}

View File

@@ -1 +1 @@
<error descr="Python version 3.5 does not support a trailing 'L'"><error descr="Python version 3.5 does not support this syntax. It requires '0o' prefix for octal literals">01234L</error></error>
<error descr="Python version 3.6 does not support a trailing 'L'"><error descr="Python version 3.6 does not support this syntax. It requires '0o' prefix for octal literals">01234L</error></error>

View File

@@ -1,58 +0,0 @@
# hex
<error descr="Python version 3.5 does not support underscores in numeric literals">0xCAFE_F00D</error>
# oct
<error descr="Python version 3.5 does not support underscores in numeric literals">0o1_23</error>
<error descr="Python version 3.5 does not support this syntax. It requires '0o' prefix for octal literals"><error descr="Python version 3.5 does not support underscores in numeric literals">01_23</error></error>
# bin
<error descr="Python version 3.5 does not support underscores in numeric literals">0b_0011_1111_0100_1110</error>
# dec
<error descr="Python version 3.5 does not support underscores in numeric literals">10_000_000</error>
# pointfloat
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.</error>
# exponentfloat
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23e1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23E1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.e1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.E1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23e+1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23E+1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.e+1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.E+1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23e-1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23E-1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.e-1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.E-1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_0000_23e1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_0000_23E1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00e1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00E1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_0000_23e+1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_0000_23E+1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00e+1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00E+1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_0000_23e-1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_0000_23E-1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00e-1_2</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00E-1_2</error>
# imag
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23j</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23J</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23e1_2j</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_00.00_23e1_2J</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_000_000j</error>
<error descr="Python version 3.5 does not support underscores in numeric literals">10_000_000J</error>

View File

@@ -1,4 +1,4 @@
def func(xs):
yield 42, <error descr="Python version 3.5 does not support unpacking without parentheses in yield statements">*xs</error>
yield 42, <error descr="Python version 3.6 does not support unpacking without parentheses in yield statements">*xs</error>
yield from 42, <error descr="Can't use starred expression here">*xs</error>
return 42, <error descr="Python version 3.5 does not support unpacking without parentheses in return statements">*xs</error>
return 42, <error descr="Python version 3.6 does not support unpacking without parentheses in return statements">*xs</error>

View File

@@ -1,8 +0,0 @@
class C:
x<error descr="Python version 3.5 does not support variable annotations">: int</error>
y<error descr="Python version 3.5 does not support variable annotations">: None</error> = 42
def m(self, d):
x<error descr="Python version 3.5 does not support variable annotations">: List[bool]</error>
d['foo']<error descr="Python version 3.5 does not support variable annotations">: str</error>
(d['bar'])<error descr="Python version 3.5 does not support variable annotations">: float</error>

View File

@@ -1,5 +0,0 @@
async def foo(x):
await x
<error descr="Python version 3.5 does not support 'yield' inside async functions">yield x</error>
<error descr="Python does not support 'yield from' inside async functions">yield from x</error>
<error descr="non-empty 'return' inside asynchronous generator">return x</error>

View File

@@ -1,2 +1,2 @@
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. The print statement has been replaced with a print() function">print 'foo'</warning>
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. The print statement has been replaced with a print() function">print 'bar'</warning>
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. The print statement has been replaced with a print() function">print 'foo'</warning>
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. The print statement has been replaced with a print() function">print 'bar'</warning>

View File

@@ -1,13 +1,13 @@
# Handle a matched regex
if (<warning descr="Python versions 2.7, 3.5, 3.6, 3.7 do not support assignment expressions">match := pattern.search(data)</warning>) is not None:
if (<warning descr="Python versions 2.7, 3.7 do not support assignment expressions">match := pattern.search(data)</warning>) is not None:
pass
# A loop that can't be trivially rewritten using 2-arg iter()
while <warning descr="Python versions 2.7, 3.5, 3.6, 3.7 do not support assignment expressions">chunk := file.read(8192)</warning>:
while <warning descr="Python versions 2.7, 3.7 do not support assignment expressions">chunk := file.read(8192)</warning>:
pass
# Reuse a value that's expensive to compute
[<warning descr="Python versions 2.7, 3.5, 3.6, 3.7 do not support assignment expressions">y := f(x)</warning>, y**2, y**3]
[<warning descr="Python versions 2.7, 3.7 do not support assignment expressions">y := f(x)</warning>, y**2, y**3]
# Share a subexpression between a comprehension filter clause and its output
filtered_data = [y for x in data if (<warning descr="Python versions 2.7, 3.5, 3.6, 3.7 do not support assignment expressions">y := f(x)</warning>) is not None]
filtered_data = [y for x in data if (<warning descr="Python versions 2.7, 3.7 do not support assignment expressions">y := f(x)</warning>) is not None]

View File

@@ -1,16 +1,16 @@
<warning descr="Python version 2.7 does not support this syntax">async</warning> def asyncgen():
<warning descr="Python version 3.5 does not support 'yield' inside async functions">yield 10</warning>
yield 10
<warning descr="Python version 2.7 does not support this syntax">async</warning> def run():
{i <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for i in asyncgen()}
[i <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for i in asyncgen()]
{i: i ** 2 <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for i in asyncgen()}
(i ** 2 <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for i in asyncgen())
list(i <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for i in asyncgen())
{i async for i in asyncgen()}
[i async for i in asyncgen()]
{i: i ** 2 async for i in asyncgen()}
(i ** 2 async for i in asyncgen())
list(i async for i in asyncgen())
dataset = {data for line in gen()
<warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for data in line
async for data in line
if check(data)}
dataset = {data <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for line in asyncgen()
<warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for data in line
dataset = {data async for line in asyncgen()
async for data in line
if check(data)}

View File

@@ -1,16 +1,16 @@
<warning descr="Python version 2.7 does not support this syntax">async</warning> def async2():
[<warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> for fun in funcs]
{<warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> for fun in funcs}
{fun: <warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> for fun in funcs}
[<warning descr="Python version 2.7 does not support this syntax">await fun()</warning> for fun in funcs]
{<warning descr="Python version 2.7 does not support this syntax">await fun()</warning> for fun in funcs}
{fun: <warning descr="Python version 2.7 does not support this syntax">await fun()</warning> for fun in funcs}
[<warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> for fun in funcs if <warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> smth</warning>]
{<warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> for fun in funcs if <warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> smth</warning>}
{fun: <warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> for fun in funcs if <warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> smth</warning>}
[<warning descr="Python version 2.7 does not support this syntax">await fun()</warning> for fun in funcs if <warning descr="Python version 2.7 does not support this syntax">await smth</warning>]
{<warning descr="Python version 2.7 does not support this syntax">await fun()</warning> for fun in funcs if <warning descr="Python version 2.7 does not support this syntax">await smth</warning>}
{fun: <warning descr="Python version 2.7 does not support this syntax">await fun()</warning> for fun in funcs if <warning descr="Python version 2.7 does not support this syntax">await smth</warning>}
[<warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for fun in funcs]
{<warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for fun in funcs}
{fun: <warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for fun in funcs}
[<warning descr="Python version 2.7 does not support this syntax">await fun()</warning> async for fun in funcs]
{<warning descr="Python version 2.7 does not support this syntax">await fun()</warning> async for fun in funcs}
{fun: <warning descr="Python version 2.7 does not support this syntax">await fun()</warning> async for fun in funcs}
[<warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for fun in funcs if <warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> smth</warning>]
{<warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for fun in funcs if <warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> smth</warning>}
{fun: <warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> fun()</warning> <warning descr="Python version 3.5 does not support 'async' inside comprehensions and generator expressions">async</warning> for fun in funcs if <warning descr="Python version 2.7 does not support this syntax"><warning descr="Python version 3.5 does not support 'await' inside comprehensions">await</warning> smth</warning>}
[<warning descr="Python version 2.7 does not support this syntax">await fun()</warning> async for fun in funcs if <warning descr="Python version 2.7 does not support this syntax">await smth</warning>]
{<warning descr="Python version 2.7 does not support this syntax">await fun()</warning> async for fun in funcs if <warning descr="Python version 2.7 does not support this syntax">await smth</warning>}
{fun: <warning descr="Python version 2.7 does not support this syntax">await fun()</warning> async for fun in funcs if <warning descr="Python version 2.7 does not support this syntax">await smth</warning>}

View File

@@ -1,4 +1,4 @@
print(<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support <>, use != instead">a <> b</warning>)
print(<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support <>, use != instead">a <> b</warning>)
if <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support <>, use != instead">a <> 2</warning>:
if <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support <>, use != instead">a <> 2</warning>:
var = a

View File

@@ -1 +1 @@
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have type long. Use int instead.">long("abc")</warning>
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have type long. Use int instead.">long("abc")</warning>

View File

@@ -2,7 +2,7 @@ class A(B):
def __init__(self):
<warning descr="Python version 2.7 does not support this syntax. super() should have arguments in Python 2">super()</warning>
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have method cmp">cmp()</warning>
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have method reduce">reduce()</warning>
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have method cmp">cmp()</warning>
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have method reduce">reduce()</warning>
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have method buffer">buffer()</warning>
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have method buffer">buffer()</warning>

View File

@@ -1,3 +1,3 @@
import math
print(<warning descr="Python versions 2.7, 3.5 do not support a 'F' prefix">f</warning>'{math.pi <warning descr="Python versions 2.7, 3.5, 3.6, 3.7 do not support equality signs in f-strings">=</warning>:.2f}')
print(<warning descr="Python versions 2.7, 3.5 do not support a 'F' prefix">f</warning>'{<warning descr="Python versions 2.7, 3.5 do not support a 'F' prefix">f</warning>"{3.1415<warning descr="Python versions 2.7, 3.5, 3.6, 3.7 do not support equality signs in f-strings">=</warning>:.1f}":*^20}')
print(<warning descr="Python version 2.7 does not support a 'F' prefix">f</warning>'{math.pi <warning descr="Python versions 2.7, 3.7 do not support equality signs in f-strings">=</warning>:.2f}')
print(<warning descr="Python version 2.7 does not support a 'F' prefix">f</warning>'{<warning descr="Python version 2.7 does not support a 'F' prefix">f</warning>"{3.1415<warning descr="Python versions 2.7, 3.7 do not support equality signs in f-strings">=</warning>:.1f}":*^20}')

View File

@@ -1,4 +1,4 @@
try:
do_smth()
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax">except ImportError, ImportWarning:
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax">except ImportError, ImportWarning:
do()</warning>

View File

@@ -1,9 +1,9 @@
<warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8 do not support arbitrary expressions as a decorator">@x[0][1]</warning>
<warning descr="Python versions 2.7, 3.7, 3.8 do not support arbitrary expressions as a decorator">@x[0][1]</warning>
@my_decorator
def say_whee():
print("Whee!")
<warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8 do not support arbitrary expressions as a decorator">@foo[0].wrapper</warning>
<warning descr="Python versions 2.7, 3.7, 3.8 do not support arbitrary expressions as a decorator">@foo[0].wrapper</warning>
@foo.bar()
def say_whee():
print("Whee!")

View File

@@ -1 +1 @@
from <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have module Bastion">Bastion</warning> import BastionClass
from <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have module Bastion">Bastion</warning> import BastionClass

View File

@@ -1,4 +1,4 @@
import <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have module Bastion">Bastion</warning>
import <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have module Bastion">Bastion</warning>
from <warning descr="Python version 2.7 does not have module asyncio">asyncio</warning> import Queue
from io import StringIO

View File

@@ -1,3 +1,3 @@
<error descr="Python version 2.7 does not have module builtins">import builtins</error>
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have module __builtin__">import __builtin__</warning>
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not have module __builtin__">import __builtin__</warning>

View File

@@ -1 +1 @@
var = [x for x in <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax in list comprehensions">1, 2, 3</warning>]
var = [x for x in <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax in list comprehensions">1, 2, 3</warning>]

View File

@@ -1,8 +1,8 @@
a = <error descr="Python does not support a trailing 'u'">12u</error>
b = <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a trailing 'l'">12l</warning>
b = <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a trailing 'l'">12l</warning>
c = <error descr="Python does not support a trailing 'll'">12ll</error>
d = <error descr="Python does not support a trailing 'U'">12U</error>
e = <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a trailing 'L'">12L</warning>
e = <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a trailing 'L'">12L</warning>
f = <error descr="Python does not support a trailing 'LL'">12LL</error>
g = <error descr="Python does not support a trailing 'ul'">0x12ful</error>
h = <error descr="Python does not support a trailing 'uL'">0X12fuL</error>
@@ -20,4 +20,4 @@ s = <error descr="Python does not support a trailing 'llu'">12llu</error>
t = <error descr="Python does not support a trailing 'llU'">12llU</error>
u = <error descr="Python does not support a trailing 'LLu'">12LLu</error>
v = <error descr="Python does not support a trailing 'LLU'">12LLU</error>
w = <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. It requires '0o' prefix for octal literals">04</warning><error descr="End of statement expected">8</error>
w = <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. It requires '0o' prefix for octal literals">04</warning><error descr="End of statement expected">8</error>

View File

@@ -1,7 +1,7 @@
with <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8 do not support parenthesized context expressions">(</warning>
with <warning descr="Python versions 2.7, 3.7, 3.8 do not support parenthesized context expressions">(</warning>
foo() as baz,
foo() as bar
<warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8 do not support parenthesized context expressions">)</warning>:
<warning descr="Python versions 2.7, 3.7, 3.8 do not support parenthesized context expressions">)</warning>:
pass
with (foo()) as baz:
@@ -10,8 +10,8 @@ with (foo()) as baz:
with (foo()):
pass
with <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8 do not support parenthesized context expressions">(</warning>foo(),<warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8 do not support parenthesized context expressions">)</warning>:
with <warning descr="Python versions 2.7, 3.7, 3.8 do not support parenthesized context expressions">(</warning>foo(),<warning descr="Python versions 2.7, 3.7, 3.8 do not support parenthesized context expressions">)</warning>:
pass
with <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8 do not support parenthesized context expressions">(</warning>foo(), bar()<warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8 do not support parenthesized context expressions">)</warning>:
with <warning descr="Python versions 2.7, 3.7, 3.8 do not support parenthesized context expressions">(</warning>foo(), bar()<warning descr="Python versions 2.7, 3.7, 3.8 do not support parenthesized context expressions">)</warning>:
pass

View File

@@ -1 +1 @@
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. The print statement has been replaced with a print() function">print "One value"</warning>
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. The print statement has been replaced with a print() function">print "One value"</warning>

View File

@@ -1,4 +1,4 @@
try:
a
except :
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax">raise ImportError, ImportWarning</warning>
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax">raise ImportError, ImportWarning</warning>

View File

@@ -1 +1 @@
a = <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support backquotes, use repr() instead">`imp.acquire_lock()`</warning>
a = <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support backquotes, use repr() instead">`imp.acquire_lock()`</warning>

View File

@@ -1,9 +1,9 @@
# Supported in Python 3.11
a[1, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*x</warning></warning>, 3]
a[1, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*x</warning></warning>]
a[1, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*x</warning></warning>, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*x</warning></warning>]
a[1:2, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*x</warning></warning>]
a[1, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*x</warning></warning>, 3]
a[1, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*x</warning></warning>]
a[1, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*x</warning></warning>, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*x</warning></warning>]
a[1:2, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*x</warning></warning>]
# Not supported
a[(<error descr="Can't use starred expression here">*x</error>)]

View File

@@ -1,18 +1,18 @@
# Supported in Python 3.11
def f(*args: <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in type annotations">*Ts</warning>): pass
def f(*args: <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in type annotations">*tuple[int, ...]</warning>): pass
def f(*args: <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in type annotations">*tuple[int, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*Ts</warning></warning>]</warning>): pass
def f(*args: <warning descr="Python versions 2.7, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in type annotations">*Ts</warning>): pass
def f(*args: <warning descr="Python versions 2.7, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in type annotations">*tuple[int, ...]</warning>): pass
def f(*args: <warning descr="Python versions 2.7, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in type annotations">*tuple[int, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*Ts</warning></warning>]</warning>): pass
def f() -> tuple[<warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*Ts</warning></warning>]: pass
def f() -> tuple[int, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*Ts</warning></warning>]: pass
def f() -> tuple[int, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*tuple[int, ...]</warning></warning>]: pass
def f() -> tuple[<warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*Ts</warning></warning>]: pass
def f() -> tuple[int, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*Ts</warning></warning>]: pass
def f() -> tuple[int, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*tuple[int, ...]</warning></warning>]: pass
x<warning descr="Python versions 2.7, 3.5 do not support variable annotations">: tuple[<warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*Ts</warning></warning>]</warning>
x<warning descr="Python versions 2.7, 3.5 do not support variable annotations">: tuple[int, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*Ts</warning></warning>]</warning>
x<warning descr="Python versions 2.7, 3.5 do not support variable annotations">: tuple[int, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*tuple[str, ...]</warning></warning>]</warning>
x<warning descr="Python version 2.7 does not support variable annotations">: tuple[<warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*Ts</warning></warning>]</warning>
x<warning descr="Python version 2.7 does not support variable annotations">: tuple[int, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*Ts</warning></warning>]</warning>
x<warning descr="Python version 2.7 does not support variable annotations">: tuple[int, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10 do not support starred expressions in subscriptions">*tuple[str, ...]</warning></warning>]</warning>
# Error in Python 3.11
def f(x: <error descr="Can't use starred expression here">*b</error>): pass
def f8(**kwargs: <error descr="Can't use starred expression here">*a</error>): pass
x<warning descr="Python versions 2.7, 3.5 do not support variable annotations">: <error descr="Can't use starred expression here">*b</error></warning>
x<warning descr="Python version 2.7 does not support variable annotations">: <error descr="Can't use starred expression here">*b</error></warning>

View File

@@ -2,15 +2,15 @@ a = u"String"
# Python 3.6
a = <error descr="Python version 2.7 does not support a 'F' prefix"><warning descr="Python version 3.5 does not support a 'F' prefix">f</warning></error>""
a = <error descr="Python version 2.7 does not support a 'F' prefix"><warning descr="Python version 3.5 does not support a 'F' prefix">F</warning></error>""
a = <error descr="Python version 2.7 does not support a 'RF' prefix"><warning descr="Python version 3.5 does not support a 'RF' prefix">rf</warning></error>""
a = <error descr="Python version 2.7 does not support a 'FR' prefix"><warning descr="Python version 3.5 does not support a 'FR' prefix">fr</warning></error>""
a = <error descr="Python version 2.7 does not support a 'FU' prefix"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'FU' prefix">fu</warning></error>""
a = <error descr="Python version 2.7 does not support a 'UF' prefix"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'UF' prefix">uf</warning></error>""
a = <error descr="Python version 2.7 does not support a 'BF' prefix"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'BF' prefix">bf</warning></error>""
a = <error descr="Python version 2.7 does not support a 'FB' prefix"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'FB' prefix">fb</warning></error>""
a = <error descr="Python version 2.7 does not support a 'UFR' prefix"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'UFR' prefix">ufr</warning></error>""
a = <error descr="Python version 2.7 does not support a 'F' prefix">f</error>""
a = <error descr="Python version 2.7 does not support a 'F' prefix">F</error>""
a = <error descr="Python version 2.7 does not support a 'RF' prefix">rf</error>""
a = <error descr="Python version 2.7 does not support a 'FR' prefix">fr</error>""
a = <error descr="Python version 2.7 does not support a 'FU' prefix"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'FU' prefix">fu</warning></error>""
a = <error descr="Python version 2.7 does not support a 'UF' prefix"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'UF' prefix">uf</warning></error>""
a = <error descr="Python version 2.7 does not support a 'BF' prefix"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'BF' prefix">bf</warning></error>""
a = <error descr="Python version 2.7 does not support a 'FB' prefix"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'FB' prefix">fb</warning></error>""
a = <error descr="Python version 2.7 does not support a 'UFR' prefix"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'UFR' prefix">ufr</warning></error>""
# python 3.3
@@ -35,7 +35,7 @@ a = b""
a = u""
a = r""
a = <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'UR' prefix">ur</warning>""
a = <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'UR' prefix">ur</warning>""
a = b""
a = br""
@@ -43,14 +43,14 @@ a = br""
a = u""
a = r""
a = <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'UR' prefix">ur</warning>""
a = <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'UR' prefix">ur</warning>""
# combined, PY-32321
b = <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not allow to mix bytes and non-bytes literals">u"" b""</warning>
b = <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not allow to mix bytes and non-bytes literals">r"" b""</warning>
b = <warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not allow to mix bytes and non-bytes literals"><error descr="Python version 2.7 does not support a 'F' prefix"><warning descr="Python version 3.5 does not support a 'F' prefix">f</warning></error>"" b""</warning>
b = <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not allow to mix bytes and non-bytes literals">u"" b""</warning>
b = <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not allow to mix bytes and non-bytes literals">r"" b""</warning>
b = <warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not allow to mix bytes and non-bytes literals"><error descr="Python version 2.7 does not support a 'F' prefix">f</error>"" b""</warning>
# never was available
a = <error descr="Python version 2.7 does not support a 'RR' prefix"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'RR' prefix">rr</warning></error>""
a = <error descr="Python version 2.7 does not support a 'BB' prefix"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'BB' prefix">bb</warning></error>""
a = <error descr="Python version 2.7 does not support a 'UU' prefix"><warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'UU' prefix">uu</warning></error>""
a = <error descr="Python version 2.7 does not support a 'RR' prefix"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'RR' prefix">rr</warning></error>""
a = <error descr="Python version 2.7 does not support a 'BB' prefix"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'BB' prefix">bb</warning></error>""
a = <error descr="Python version 2.7 does not support a 'UU' prefix"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support a 'UU' prefix">uu</warning></error>""

View File

@@ -1 +1 @@
<error descr="Python version 3.11 does not support type alias statements" textAttributesKey="ERRORS_ATTRIBUTES"><warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11 do not support type alias statements" textAttributesKey="WARNING_ATTRIBUTES">type MyType = str</warning></error>
<error descr="Python version 3.11 does not support type alias statements" textAttributesKey="ERRORS_ATTRIBUTES"><warning descr="Python versions 2.7, 3.7, 3.8, 3.9, 3.10, 3.11 do not support type alias statements" textAttributesKey="WARNING_ATTRIBUTES">type MyType = str</warning></error>

View File

@@ -1,3 +1,3 @@
class Clazz<error descr="Python version 3.11 does not support this syntax" textAttributesKey="ERRORS_ATTRIBUTES"><warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11 do not support this syntax" textAttributesKey="WARNING_ATTRIBUTES">[T]</warning></error>:
def foo<error descr="Python version 3.11 does not support this syntax" textAttributesKey="ERRORS_ATTRIBUTES"><warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11 do not support this syntax" textAttributesKey="WARNING_ATTRIBUTES">[U]</warning></error>(self):
class Clazz<error descr="Python version 3.11 does not support this syntax" textAttributesKey="ERRORS_ATTRIBUTES"><warning descr="Python versions 2.7, 3.7, 3.8, 3.9, 3.10, 3.11 do not support this syntax" textAttributesKey="WARNING_ATTRIBUTES">[T]</warning></error>:
def foo<error descr="Python version 3.11 does not support this syntax" textAttributesKey="ERRORS_ATTRIBUTES"><warning descr="Python versions 2.7, 3.7, 3.8, 3.9, 3.10, 3.11 do not support this syntax" textAttributesKey="WARNING_ATTRIBUTES">[U]</warning></error>(self):
pass

View File

@@ -1,58 +1,58 @@
# hex
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">0xCAFE_F00D</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">0xCAFE_F00D</warning>
# oct
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">0o1_23</warning>
<error descr="Python version 3.6 does not support this syntax. It requires '0o' prefix for octal literals"><warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals"><warning descr="Python versions 3.5, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. It requires '0o' prefix for octal literals">01_23</warning></warning></error>
<warning descr="Python version 2.7 does not support underscores in numeric literals">0o1_23</warning>
<error descr="Python version 3.6 does not support this syntax. It requires '0o' prefix for octal literals"><warning descr="Python version 2.7 does not support underscores in numeric literals"><warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. It requires '0o' prefix for octal literals">01_23</warning></warning></error>
# bin
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">0b_0011_1111_0100_1110</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">0b_0011_1111_0100_1110</warning>
# dec
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_000_000</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_000_000</warning>
# pointfloat
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.</warning>
# exponentfloat
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23e1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23E1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.e1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.E1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23e1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23E1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.e1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.E1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23e+1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23E+1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.e+1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.E+1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23e+1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23E+1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.e+1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.E+1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23e-1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23E-1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.e-1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.E-1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23e-1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23E-1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.e-1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.E-1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_0000_23e1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_0000_23E1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00e1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00E1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_0000_23e1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_0000_23E1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00e1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00E1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_0000_23e+1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_0000_23E+1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00e+1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00E+1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_0000_23e+1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_0000_23E+1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00e+1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00E+1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_0000_23e-1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_0000_23E-1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00e-1_2</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00E-1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_0000_23e-1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_0000_23E-1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00e-1_2</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00E-1_2</warning>
# imag
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23j</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23J</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23j</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23J</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23e1_2j</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_00.00_23e1_2J</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23e1_2j</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_00.00_23e1_2J</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_000_000j</warning>
<warning descr="Python versions 2.7, 3.5 do not support underscores in numeric literals">10_000_000J</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_000_000j</warning>
<warning descr="Python version 2.7 does not support underscores in numeric literals">10_000_000J</warning>

View File

@@ -1,7 +1,7 @@
def gen(xs):
yield 42, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7 do not support unpacking without parentheses in yield statements">*xs</warning></warning>
yield 42, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python version 3.7 does not support unpacking without parentheses in yield statements">*xs</warning></warning>
<warning descr="Python version 2.7 does not support this syntax. Delegating to a subgenerator is available since Python 3.3; use explicit iteration over subgenerator instead.">yield from 42, <error descr="Can't use starred expression here"><warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets">*xs</warning></error></warning>
def func(xs):
return 42, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python versions 3.5, 3.6, 3.7 do not support unpacking without parentheses in return statements">*xs</warning></warning>
return 42, <warning descr="Python version 2.7 does not support starred expressions in tuples, lists, and sets"><warning descr="Python version 3.7 does not support unpacking without parentheses in return statements">*xs</warning></warning>

View File

@@ -1,8 +1,8 @@
class C:
x<warning descr="Python versions 2.7, 3.5 do not support variable annotations">: int</warning>
y<warning descr="Python versions 2.7, 3.5 do not support variable annotations">: None</warning> = 42
x<warning descr="Python version 2.7 does not support variable annotations">: int</warning>
y<warning descr="Python version 2.7 does not support variable annotations">: None</warning> = 42
def m(self, d):
x<warning descr="Python versions 2.7, 3.5 do not support variable annotations">: List[bool]</warning>
d['foo']<warning descr="Python versions 2.7, 3.5 do not support variable annotations">: str</warning>
(d['bar'])<warning descr="Python versions 2.7, 3.5 do not support variable annotations">: float</warning>
x<warning descr="Python version 2.7 does not support variable annotations">: List[bool]</warning>
d['foo']<warning descr="Python version 2.7 does not support variable annotations">: str</warning>
(d['bar'])<warning descr="Python version 2.7 does not support variable annotations">: float</warning>

View File

@@ -1,5 +1,5 @@
<warning descr="Python version 2.7 does not support this syntax">async</warning> def foo(x):
<warning descr="Python version 2.7 does not support this syntax">await x</warning>
<warning descr="Python version 3.5 does not support 'yield' inside async functions">yield x</warning>
yield x
<error descr="Python does not support 'yield from' inside async functions"><warning descr="Python version 2.7 does not support this syntax. Delegating to a subgenerator is available since Python 3.3; use explicit iteration over subgenerator instead.">yield from x</warning></error>
<error descr="non-empty 'return' inside asynchronous generator"><warning descr="Python versions < 3.3 do not allow 'return' with argument inside generator.">return x</warning></error>

View File

@@ -1,3 +1,3 @@
<warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not support match statements">match</warning> 42:
<warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not support match statements">match</warning> 42:
case 42:
pass

View File

@@ -1 +1 @@
print(<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support <>, use != instead">a<caret> <> b</warning>)
print(<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support <>, use != instead">a<caret> <> b</warning>)

View File

@@ -1 +1 @@
<warning descr="Python versions 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. The print statement has been replaced with a print() function">print "foo"</warning>
<warning descr="Python versions 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 do not support this syntax. The print statement has been replaced with a print() function">print "foo"</warning>

View File

@@ -1,4 +1,4 @@
class A:
pass
assert isinstance(A(), <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str</warning>)
assert isinstance(A(), <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str</warning>)

View File

@@ -1,4 +1,4 @@
class A:
pass
assert issubclass(A, <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str</warning>)
assert issubclass(A, <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str</warning>)

View File

@@ -1,5 +1,5 @@
from typing import Union
def foo() -> <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | Union[str, bool]</warning>:
def foo() -> <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | Union[str, bool]</warning>:
return 42

View File

@@ -1,4 +1,4 @@
from typing import Union
a<warning descr="Python versions 2.7, 3.5 do not support variable annotations">: <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | Union[str, bool]</warning></warning> = 42
a<warning descr="Python version 2.7 does not support variable annotations">: <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | Union[str, bool]</warning></warning> = 42

View File

@@ -1,4 +1,4 @@
class A:
pass
assert isinstance(A(), <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str</warning>)
assert isinstance(A(), <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str</warning>)

View File

@@ -1,4 +1,4 @@
class A:
pass
assert issubclass(A, <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str</warning>)
assert issubclass(A, <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str</warning>)

View File

@@ -1,2 +1,2 @@
def foo() -> <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str</warning>:
def foo() -> <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str</warning>:
return 42

View File

@@ -1,2 +1,2 @@
def foo() -> <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str | list[dict[int, str]] | set[list[int]] | dict[str, int]</warning>:
def foo() -> <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str | list[dict[int, str]] | set[list[int]] | dict[str, int]</warning>:
return 42

View File

@@ -1,2 +1,2 @@
def foo() -> <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | None | str</warning>:
def foo() -> <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | None | str</warning>:
return 42

View File

@@ -1,2 +1,2 @@
def foo() -> <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">int<caret> | None</warning>:
def foo() -> <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">int<caret> | None</warning>:
return 42

View File

@@ -1,2 +1,2 @@
def foo() -> <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str | None</warning>:
def foo() -> <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y"><caret>int | str | None</warning>:
return 42

View File

@@ -1,2 +1,2 @@
def foo() -> <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">None | int<caret></warning>:
def foo() -> <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">None | int<caret></warning>:
return 42

View File

@@ -1,4 +1,4 @@
class A:
pass
assert isinstance(A(), <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">(int<caret> | str | (list[str] | bool | float)) | dict[str, int]</warning>)
assert isinstance(A(), <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">(int<caret> | str | (list[str] | bool | float)) | dict[str, int]</warning>)

View File

@@ -233,34 +233,20 @@ public class PythonHighlightingTest extends PyTestCase {
}
public void testAsync() {
doTest(LanguageLevel.PYTHON35, true, true);
doTest(LanguageLevel.PYTHON36, true, true);
}
public void testAwait() {
doTest(LanguageLevel.PYTHON35, true, true);
}
// PY-19679
public void testAwaitInListPy35() {
doTest(LanguageLevel.PYTHON35, true, false);
doTest(LanguageLevel.PYTHON36, true, true);
}
public void testAwaitInTuple() {
doTest(LanguageLevel.PYTHON35, true, false);
doTest(LanguageLevel.PYTHON36, true, false);
}
public void testAwaitInGenerator() {
doTest(LanguageLevel.PYTHON35, true, false);
doTest(LanguageLevel.PYTHON36, true, false);
}
public void testAwaitInSetPy35() {
doTest(LanguageLevel.PYTHON35, true, false);
}
public void testAwaitInDictPy35() {
doTest(LanguageLevel.PYTHON35, true, false);
}
// PY-20770
public void testAwaitInListPy36() {
doTest(LanguageLevel.PYTHON36, true, false);
@@ -276,17 +262,13 @@ public class PythonHighlightingTest extends PyTestCase {
doTest(LanguageLevel.PYTHON36, true, false);
}
public void testYieldInsideAsyncDefPy35() {
doTest(LanguageLevel.PYTHON35, false, false);
}
// PY-20770
public void testYieldInsideAsyncDefPy36() {
doTest(LanguageLevel.PYTHON36, true, false);
}
public void testUnpackingStar() {
doTest(LanguageLevel.PYTHON35, false, false);
doTest(LanguageLevel.PYTHON36, false, false);
}
// PY-52930
@@ -336,7 +318,7 @@ public class PythonHighlightingTest extends PyTestCase {
// PY-35961
public void testUnpackingInNonParenthesizedTuplesInReturnAndYieldBefore38() {
doTest(LanguageLevel.PYTHON35, false, false);
doTest(LanguageLevel.PYTHON36, false, false);
}
// PY-35961
@@ -357,7 +339,7 @@ public class PythonHighlightingTest extends PyTestCase {
// PY-19775
public void testAsyncBuiltinMethods() {
doTest(LanguageLevel.PYTHON35, true, false);
doTest(LanguageLevel.PYTHON36, true, false);
}
// PY-28017
@@ -371,15 +353,7 @@ public class PythonHighlightingTest extends PyTestCase {
}
public void testImplicitOctLongInteger() {
doTest(LanguageLevel.PYTHON35, true, false);
}
public void testUnderscoresInNumericLiterals() {
doTest(LanguageLevel.PYTHON35, true, false);
}
public void testVariableAnnotations() {
doTest(LanguageLevel.PYTHON35, true, false);
doTest(LanguageLevel.PYTHON36, true, false);
}
public void testIllegalVariableAnnotationTarget() {
@@ -390,11 +364,6 @@ public class PythonHighlightingTest extends PyTestCase {
doTest();
}
// PY-20770
public void testAsyncComprehensionsPy35() {
doTest(LanguageLevel.PYTHON35, true, false);
}
// PY-20770
public void testAsyncComprehensionsPy36() {
doTest(LanguageLevel.PYTHON36, true, false);
@@ -623,12 +592,12 @@ public class PythonHighlightingTest extends PyTestCase {
// PY-26491
public void testMultiplePositionalContainers() {
doTest(LanguageLevel.PYTHON35, true, false);
doTest(LanguageLevel.PYTHON36, true, false);
}
// PY-26491
public void testMultipleKeywordContainers() {
doTest(LanguageLevel.PYTHON35, true, false);
doTest(LanguageLevel.PYTHON36, true, false);
}
// PY-26510

View File

@@ -28,7 +28,7 @@ public class Py3CompatibilityInspectionTest extends PyInspectionTestCase {
// PY-44974
public void testBitwiseOrUnionOnReturnType() {
doTestByText("""
def foo() -> <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">int | str</warning>:
def foo() -> <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">int | str</warning>:
return 42
""");
}
@@ -48,13 +48,13 @@ public class Py3CompatibilityInspectionTest extends PyInspectionTestCase {
class A:
pass
assert isinstance(A(), <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">int | str</warning>)
assert isinstance(A(), <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">int | str</warning>)
""");
}
// PY-44974
public void testBitwiseOrUnionInPrint() {
doTestByText("print(<warning descr=\"Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y\">int | str | dict</warning>)");
doTestByText("print(<warning descr=\"Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y\">int | str | dict</warning>)");
}
// PY-44974
@@ -69,7 +69,7 @@ public class Py3CompatibilityInspectionTest extends PyInspectionTestCase {
// PY-44974
public void testBitwiseOrUnionInParenthesizedUnionOfUnions() {
doTestByText("""
def foo() -> <warning descr="Python versions 2.7, 3.5, 3.6, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">int | ((list | dict) | (float | str))</warning>:
def foo() -> <warning descr="Python versions 2.7, 3.7, 3.8, 3.9 do not allow writing union types as X | Y">int | ((list | dict) | (float | str))</warning>:
pass
""");
}

View File

@@ -226,7 +226,7 @@ public class PyCompatibilityInspectionTest extends PyInspectionTestCase {
runWithLanguageLevel(
LanguageLevel.PYTHON38,
() -> doTestByText(
"def f(pos1, <warning descr=\"Python versions 2.7, 3.5, 3.6, 3.7 do not support positional-only parameters\">/</warning>, pos_or_kwd, *, kwd1):\n" +
"def f(pos1, <warning descr=\"Python versions 2.7, 3.7 do not support positional-only parameters\">/</warning>, pos_or_kwd, *, kwd1):\n" +
" pass"
)
);
@@ -246,7 +246,7 @@ public class PyCompatibilityInspectionTest extends PyInspectionTestCase {
try:
print("a")
finally:
<warning descr="Python versions 2.7, 3.5, 3.6, 3.7 do not support 'continue' inside 'finally' clause">continue</warning>""")
<warning descr="Python versions 2.7, 3.7 do not support 'continue' inside 'finally' clause">continue</warning>""")
);
}