mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 04:51:24 +07:00
PY-77433 Don't report mutable field defaults in dataclass_transform-based dataclasses
Some dataclass implementations, such as Pydantic, allow declaring fields with mutable defaults, deep-copying them under the hood. See https://docs.pydantic.dev/latest/concepts/models/#fields-with-non-hashable-default-values (cherry picked from commit e495621858950976226731dddbb01af4012704fa) IJ-CR-151192 GitOrigin-RevId: 7412272584a4c26e404d3d84e6150f974027eca7
This commit is contained in:
committed by
intellij-monorepo-bot
parent
19d6ad45a2
commit
6e515ed9b8
@@ -60,8 +60,17 @@ class PyDataclassInspection : PyInspection() {
|
||||
val dataclassParameters = parseDataclassParameters(node, myTypeEvalContext)
|
||||
|
||||
if (dataclassParameters != null) {
|
||||
if (dataclassParameters.type.asPredefinedType == PyDataclassParameters.PredefinedType.STD ||
|
||||
dataclassParameters.type.asPredefinedType == PyDataclassParameters.PredefinedType.DATACLASS_TRANSFORM) {
|
||||
if (dataclassParameters.type.asPredefinedType == PyDataclassParameters.PredefinedType.DATACLASS_TRANSFORM) {
|
||||
processDataclassParameters(node, dataclassParameters)
|
||||
|
||||
node.processClassLevelDeclarations { element, _ ->
|
||||
if (element is PyTargetExpression) {
|
||||
processFieldFunctionCall(node, dataclassParameters, element)
|
||||
}
|
||||
true
|
||||
}
|
||||
}
|
||||
else if (dataclassParameters.type.asPredefinedType == PyDataclassParameters.PredefinedType.STD) {
|
||||
processDataclassParameters(node, dataclassParameters)
|
||||
|
||||
val postInit = node.findMethodByName(Dataclasses.DUNDER_POST_INIT, false, myTypeEvalContext)
|
||||
|
||||
Reference in New Issue
Block a user