mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-57582 dataclasses: field with default value preceding KW_ONLY shows false-positive warning
- support marker field typed with KW_ONLY - adjust other inspection message GitOrigin-RevId: 28f30ffcc3400bc719c63eacd76e432a547a1a9c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
041ec1f6e2
commit
eb3eeb0fca
+2
-2
@@ -4,5 +4,5 @@ from mod import Base
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'Base'">Sub</error>(Base):
|
||||
field_no_default: int
|
||||
class Sub(Base):
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'Base'">field_no_default</error>: int
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@ from decorator import my_dataclass
|
||||
|
||||
|
||||
@my_dataclass()
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'A1'">B1</error>(A1):
|
||||
y1: str
|
||||
class B1(A1):
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'A1'">y1</error>: str
|
||||
y2: str = "1"
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -54,8 +54,8 @@ class BaseNotKwOnlyDefault:
|
||||
|
||||
|
||||
@my_dataclass()
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'BaseNotKwOnlyDefault'">SubNotKwOnly</error>(BaseNotKwOnlyDefault):
|
||||
not_kw_only_no_default: int
|
||||
class SubNotKwOnly(BaseNotKwOnlyDefault):
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'BaseNotKwOnlyDefault'">not_kw_only_no_default</error>: int
|
||||
|
||||
|
||||
@my_dataclass(kw_only=True)
|
||||
|
||||
+2
-2
@@ -4,5 +4,5 @@ from mod import Base
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'Base'">Sub</error>(Base):
|
||||
field_no_default: int
|
||||
class Sub(Base):
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'Base'">field_no_default</error>: int
|
||||
|
||||
@@ -7,8 +7,8 @@ class A1:
|
||||
x2: int = 1
|
||||
|
||||
@dataclasses.dataclass
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'A1'">B1</error>(A1):
|
||||
y1: str
|
||||
class B1(A1):
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'A1'">y1</error>: str
|
||||
y2: str = "1"
|
||||
|
||||
@attr.dataclass
|
||||
@@ -17,8 +17,8 @@ class A2:
|
||||
x2: int = 1
|
||||
|
||||
@attr.dataclass
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'A2'">B2</error>(A2):
|
||||
y1: str
|
||||
class B2(A2):
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'A2'">y1</error>: str
|
||||
y2: str = "1"
|
||||
|
||||
@dataclasses.dataclass
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
from dataclasses import dataclass, KW_ONLY
|
||||
from typing import NamedTuple
|
||||
|
||||
|
||||
@dataclass
|
||||
class A1:
|
||||
bar1: int = 1 # no error
|
||||
_: KW_ONLY
|
||||
bar2: int
|
||||
|
||||
|
||||
@dataclass
|
||||
class Base:
|
||||
x: int = 0
|
||||
|
||||
|
||||
@dataclass
|
||||
class Child1(Base):
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'Base'">y</error>: int
|
||||
_: KW_ONLY
|
||||
z: int = 1
|
||||
|
||||
|
||||
@dataclass
|
||||
class Child2(Base):
|
||||
_: KW_ONLY
|
||||
y: int # no error
|
||||
z: int = 1
|
||||
@@ -12,16 +12,16 @@ class A1(B):
|
||||
b: int
|
||||
|
||||
@dataclass
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'B'">A2</error>(B):
|
||||
class A2(B):
|
||||
a: int
|
||||
c: int
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'B'">c</error>: int
|
||||
b: int
|
||||
|
||||
@dataclass
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'B'">A3</error>(B):
|
||||
class A3(B):
|
||||
a: int
|
||||
b: int
|
||||
c: int
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'B'">c</error>: int
|
||||
|
||||
@dataclass
|
||||
class A4(B):
|
||||
@@ -30,25 +30,25 @@ class A4(B):
|
||||
c: int = 1
|
||||
|
||||
@dataclass
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'B'">A5</error>(B):
|
||||
class A5(B):
|
||||
a: int
|
||||
<error descr="Fields with a default value must come after any fields without a default.">c</error>: int = 1
|
||||
<error descr="Fields with a default value must come after any fields without a default.">d</error>: int = 1
|
||||
b: int
|
||||
e: int
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'B'">e</error>: int
|
||||
|
||||
@dataclass
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'B'">A6</error>(B):
|
||||
class A6(B):
|
||||
a: int
|
||||
<error descr="Fields with a default value must come after any fields without a default.">c</error>: int = 1
|
||||
d: int
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'B'">d</error>: int
|
||||
e: int
|
||||
b: int = 1
|
||||
|
||||
@dataclass
|
||||
class <error descr="Non-default argument(s) follows default argument(s) defined in 'B'">A7</error>(B):
|
||||
class A7(B):
|
||||
a: int
|
||||
b: int
|
||||
<error descr="Fields with a default value must come after any fields without a default.">c</error>: int = 1
|
||||
<error descr="Fields with a default value must come after any fields without a default.">d</error>: int = 1
|
||||
e: int
|
||||
<error descr="Non-default argument(s) follows default argument(s) defined in 'B'">e</error>: int
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
from typing import NamedTuple
|
||||
from dataclasses import KW_ONLY
|
||||
|
||||
|
||||
class NoDataclass(NamedTuple):
|
||||
y: int
|
||||
_: KW_ONLY # no effect
|
||||
<error descr="Fields with a default value must come after any fields without a default.">z</error>: int = 1
|
||||
bar2: int
|
||||
Reference in New Issue
Block a user