mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 05:54:25 +08:00
Fix attrs + remove dataclass_transform init=false tests
This commit is contained in:
@@ -624,8 +624,11 @@ def _dataclass(value, arguments, callback):
|
|||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
else:
|
elif c.is_function():
|
||||||
# Decorator customization
|
# dataclass_transform on a decorator equivalent of @dataclass
|
||||||
|
return ValueSet([value])
|
||||||
|
elif value.name.string_name != "dataclass_transform":
|
||||||
|
# dataclass (or like) decorator customization
|
||||||
return ValueSet(
|
return ValueSet(
|
||||||
[
|
[
|
||||||
DataclassDecorator(
|
DataclassDecorator(
|
||||||
@@ -634,6 +637,9 @@ def _dataclass(value, arguments, callback):
|
|||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
else:
|
||||||
|
# dataclass_transform decorator customization; nothing impactful
|
||||||
|
return ValueSet([value])
|
||||||
return NO_VALUES
|
return NO_VALUES
|
||||||
|
|
||||||
|
|
||||||
@@ -796,17 +802,6 @@ _implemented = {
|
|||||||
# For now this works at least better than Jedi trying to understand it.
|
# For now this works at least better than Jedi trying to understand it.
|
||||||
'dataclass': _dataclass
|
'dataclass': _dataclass
|
||||||
},
|
},
|
||||||
# attrs exposes declaration interface roughly compatible with dataclasses
|
|
||||||
# via attrs.define, attrs.frozen and attrs.mutable
|
|
||||||
# https://www.attrs.org/en/stable/names.html
|
|
||||||
'attr': {
|
|
||||||
'define': _dataclass,
|
|
||||||
'frozen': _dataclass,
|
|
||||||
},
|
|
||||||
'attrs': {
|
|
||||||
'define': _dataclass,
|
|
||||||
'frozen': _dataclass,
|
|
||||||
},
|
|
||||||
'os.path': {
|
'os.path': {
|
||||||
'dirname': _create_string_input_function(os.path.dirname),
|
'dirname': _create_string_input_function(os.path.dirname),
|
||||||
'abspath': _create_string_input_function(os.path.abspath),
|
'abspath': _create_string_input_function(os.path.abspath),
|
||||||
|
|||||||
@@ -432,7 +432,7 @@ dataclass_transform_cases = [
|
|||||||
# Base Class
|
# Base Class
|
||||||
['@dataclass_transform\nclass X:', [], False],
|
['@dataclass_transform\nclass X:', [], False],
|
||||||
# Base Class with params
|
# Base Class with params
|
||||||
['@dataclass_transform(eq=True)\nclass X:', [], False],
|
['@dataclass_transform(eq_default=True)\nclass X:', [], False],
|
||||||
# Subclass
|
# Subclass
|
||||||
[dedent('''
|
[dedent('''
|
||||||
class Y():
|
class Y():
|
||||||
@@ -447,6 +447,13 @@ dataclass_transform_cases = [
|
|||||||
y: int
|
y: int
|
||||||
z = 5
|
z = 5
|
||||||
class X(Y):'''), [], True],
|
class X(Y):'''), [], True],
|
||||||
|
# Class based with params
|
||||||
|
[dedent('''
|
||||||
|
@dataclass_transform(eq_default=True)
|
||||||
|
class Y():
|
||||||
|
y: int
|
||||||
|
z = 5
|
||||||
|
class X(Y):'''), [], True],
|
||||||
# Decorator based
|
# Decorator based
|
||||||
[dedent('''
|
[dedent('''
|
||||||
@dataclass_transform
|
@dataclass_transform
|
||||||
@@ -465,19 +472,6 @@ dataclass_transform_cases = [
|
|||||||
p = 5
|
p = 5
|
||||||
class X(ModelBase):'''), [], True],
|
class X(ModelBase):'''), [], True],
|
||||||
# 3/ Init tweaks
|
# 3/ Init tweaks
|
||||||
# init=False
|
|
||||||
[dedent('''
|
|
||||||
@dataclass_transform(init=False)
|
|
||||||
class Y():
|
|
||||||
y: int
|
|
||||||
z = 5
|
|
||||||
class X(Y):'''), [], False],
|
|
||||||
[dedent('''
|
|
||||||
@dataclass_transform(eq=True, init=False)
|
|
||||||
class Y():
|
|
||||||
y: int
|
|
||||||
z = 5
|
|
||||||
class X(Y):'''), [], False],
|
|
||||||
# custom init
|
# custom init
|
||||||
[dedent('''
|
[dedent('''
|
||||||
@dataclass_transform()
|
@dataclass_transform()
|
||||||
@@ -495,10 +489,9 @@ ids = [
|
|||||||
"transformer_with_params",
|
"transformer_with_params",
|
||||||
"subclass_transformer",
|
"subclass_transformer",
|
||||||
"base_transformed",
|
"base_transformed",
|
||||||
|
"base_transformed_with_params",
|
||||||
"decorator_transformed",
|
"decorator_transformed",
|
||||||
"metaclass_transformed",
|
"metaclass_transformed",
|
||||||
"init_false",
|
|
||||||
"init_false_multiple",
|
|
||||||
"custom_init",
|
"custom_init",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user