diff --git a/.basedpyright/baseline.json b/.basedpyright/baseline.json index 203432843..928c13b29 100644 --- a/.basedpyright/baseline.json +++ b/.basedpyright/baseline.json @@ -11753,14 +11753,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 38, - "endColumn": 39, - "lineCount": 1 - } - }, { "code": "reportArgumentType", "range": { @@ -12025,22 +12017,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 37, - "endColumn": 55, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 50, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -12073,14 +12049,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 35, - "endColumn": 53, - "lineCount": 1 - } - }, { "code": "reportAny", "range": { @@ -12153,22 +12121,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 37, - "endColumn": 55, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 46, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -12201,14 +12153,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 31, - "endColumn": 49, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -13716,10 +13660,10 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 24, + "startColumn": 16, + "endColumn": 26, "lineCount": 1 } }, @@ -13727,15 +13671,31 @@ "code": "reportUnknownArgumentType", "range": { "startColumn": 16, - "endColumn": 26, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 16, - "endColumn": 36, + "startColumn": 28, + "endColumn": 39, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 27, + "endColumn": 37, + "lineCount": 1 + } + }, + { + "code": "reportUnknownArgumentType", + "range": { + "startColumn": 35, + "endColumn": 59, "lineCount": 1 } }, @@ -13803,30 +13763,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 50, - "endColumn": 71, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 50, - "endColumn": 71, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 66, - "endColumn": 71, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -13859,30 +13795,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 45, - "endColumn": 66, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 45, - "endColumn": 66, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 61, - "endColumn": 66, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -13915,14 +13827,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 8, - "endColumn": 23, - "lineCount": 1 - } - }, { "code": "reportImplicitOverride", "range": { @@ -13931,14 +13835,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 30, - "endColumn": 42, - "lineCount": 1 - } - }, { "code": "reportMissingParameterType", "range": { @@ -13987,22 +13883,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 15, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 15, - "endColumn": 52, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -14027,14 +13907,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 33, - "endColumn": 43, - "lineCount": 1 - } - }, { "code": "reportMissingParameterType", "range": { @@ -14051,14 +13923,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 38, - "endColumn": 44, - "lineCount": 1 - } - }, { "code": "reportMissingParameterType", "range": { @@ -14067,14 +13931,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 46, - "endColumn": 58, - "lineCount": 1 - } - }, { "code": "reportMissingParameterType", "range": { @@ -14083,14 +13939,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 60, - "endColumn": 63, - "lineCount": 1 - } - }, { "code": "reportMissingParameterType", "range": { @@ -14099,14 +13947,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 65, - "endColumn": 69, - "lineCount": 1 - } - }, { "code": "reportMissingParameterType", "range": { @@ -14155,14 +13995,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 47, - "endColumn": 58, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -14339,14 +14171,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 46, - "endColumn": 66, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -14355,30 +14179,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 26, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 42, - "endColumn": 47, - "lineCount": 1 - } - }, { "code": "reportUnknownParameterType", "range": { @@ -14476,111 +14276,23 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownMemberType", "range": { "startColumn": 8, - "endColumn": 18, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 21, - "endColumn": 48, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 37, - "endColumn": 48, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 40, - "endColumn": 55, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 8, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 22, - "endColumn": 40, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 33, - "endColumn": 59, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 49, - "endColumn": 59, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 24, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 48, - "endColumn": 63, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 35, - "endColumn": 50, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 11, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { "startColumn": 13, "endColumn": 21, @@ -14612,7 +14324,7 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { "startColumn": 8, "endColumn": 16, @@ -14620,7 +14332,7 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { "startColumn": 19, "endColumn": 29, @@ -14628,7 +14340,7 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { "startColumn": 18, "endColumn": 26, @@ -14636,7 +14348,7 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { "startColumn": 31, "endColumn": 83, @@ -14652,7 +14364,7 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { "startColumn": 15, "endColumn": 29, @@ -14668,7 +14380,7 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { "startColumn": 15, "endColumn": 23, @@ -14755,30 +14467,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 13, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 55, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 32, - "endColumn": 55, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -14803,30 +14491,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 12, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 37, - "endColumn": 55, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 50, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -14875,22 +14539,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 33, - "endColumn": 59, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 49, - "endColumn": 59, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -14979,14 +14627,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 44, - "endColumn": 64, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -15083,30 +14723,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 12, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 74, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 37, - "endColumn": 57, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -15115,30 +14731,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 26, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 42, - "endColumn": 47, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -15148,15 +14740,7 @@ } }, { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 44, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { "startColumn": 12, "endColumn": 17, @@ -15164,29 +14748,13 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { "startColumn": 20, "endColumn": 31, "lineCount": 21 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 33, - "lineCount": 1 - } - }, { "code": "reportPossiblyUnboundVariable", "range": { @@ -15323,30 +14891,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 14, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 17, - "endColumn": 56, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 33, - "endColumn": 56, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -15411,14 +14955,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 40, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -15443,14 +14979,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 22, - "endColumn": 40, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -15483,30 +15011,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 12, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 37, - "endColumn": 48, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 20, - "endColumn": 46, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -15532,37 +15036,13 @@ } }, { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 33, - "endColumn": 59, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 49, - "endColumn": 59, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { "startColumn": 12, "endColumn": 17, "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 39, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -15588,7 +15068,7 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { "startColumn": 16, "endColumn": 21, @@ -15676,42 +15156,18 @@ } }, { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 19, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 14, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 17, - "endColumn": 54, + "startColumn": 8, + "endColumn": 17, "lineCount": 1 } }, { - "code": "reportAttributeAccessIssue", + "code": "reportUnknownVariableType", "range": { - "startColumn": 33, - "endColumn": 54, + "startColumn": 8, + "endColumn": 19, "lineCount": 1 } }, @@ -15780,7 +15236,7 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { "startColumn": 16, "endColumn": 19, @@ -15788,7 +15244,7 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportAny", "range": { "startColumn": 21, "endColumn": 25, @@ -15804,18 +15260,10 @@ } }, { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 44, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 16, - "endColumn": 44, + "startColumn": 45, + "endColumn": 51, "lineCount": 1 } }, @@ -15828,7 +15276,7 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { "startColumn": 66, "endColumn": 69, @@ -15836,7 +15284,7 @@ } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { "startColumn": 71, "endColumn": 75, @@ -15939,22 +15387,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 34, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -15979,30 +15411,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 14, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 17, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 33, - "endColumn": 39, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -16052,42 +15460,50 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 28, - "endColumn": 46, + "startColumn": 40, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 28, - "endColumn": 50, + "startColumn": 37, + "endColumn": 43, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 23, - "endColumn": 38, + "startColumn": 58, + "endColumn": 61, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportArgumentType", "range": { - "startColumn": 40, - "endColumn": 44, + "startColumn": 63, + "endColumn": 67, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { "startColumn": 8, - "endColumn": 36, + "endColumn": 27, + "lineCount": 1 + } + }, + { + "code": "reportIncompatibleMethodOverride", + "range": { + "startColumn": 8, + "endColumn": 27, "lineCount": 1 } }, @@ -16099,6 +15515,14 @@ "lineCount": 1 } }, + { + "code": "reportUnknownParameterType", + "range": { + "startColumn": 34, + "endColumn": 38, + "lineCount": 1 + } + }, { "code": "reportMissingParameterType", "range": { @@ -16124,34 +15548,34 @@ } }, { - "code": "reportUnknownVariableType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 17, + "startColumn": 48, + "endColumn": 52, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 20, - "endColumn": 47, + "startColumn": 54, + "endColumn": 63, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 54, - "endColumn": 63, + "startColumn": 15, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownVariableType", "range": { - "startColumn": 31, - "endColumn": 40, + "startColumn": 15, + "endColumn": 41, "lineCount": 1 } } @@ -17469,14 +16893,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 8, - "endColumn": 14, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -17486,15 +16902,7 @@ } }, { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 29, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", + "code": "reportIncompatibleMethodOverride", "range": { "startColumn": 8, "endColumn": 26, @@ -17502,61 +16910,13 @@ } }, { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 15, - "endColumn": 85, - "lineCount": 1 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 15, - "endColumn": 85, - "lineCount": 1 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 51, - "endColumn": 85, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", + "code": "reportIncompatibleMethodOverride", "range": { "startColumn": 8, "endColumn": 27, "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 15, - "endColumn": 59, - "lineCount": 3 - } - }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 15, - "endColumn": 59, - "lineCount": 3 - } - }, - { - "code": "reportAttributeAccessIssue", - "range": { - "startColumn": 17, - "endColumn": 58, - "lineCount": 1 - } - }, { "code": "reportMissingParameterType", "range": { @@ -28553,6 +27913,14 @@ "lineCount": 1 } }, + { + "code": "reportAbstractUsage", + "range": { + "startColumn": 19, + "endColumn": 18, + "lineCount": 4 + } + }, { "code": "reportCallIssue", "range": { @@ -28681,6 +28049,14 @@ "lineCount": 1 } }, + { + "code": "reportAbstractUsage", + "range": { + "startColumn": 19, + "endColumn": 18, + "lineCount": 4 + } + }, { "code": "reportCallIssue", "range": { @@ -43861,14 +43237,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 32, - "endColumn": 41, - "lineCount": 1 - } - }, { "code": "reportUnknownVariableType", "range": { @@ -43917,22 +43285,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownVariableType", - "range": { - "startColumn": 12, - "endColumn": 18, - "lineCount": 1 - } - }, - { - "code": "reportOptionalSubscript", - "range": { - "startColumn": 21, - "endColumn": 48, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -43941,14 +43293,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 49, - "endColumn": 55, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { diff --git a/pytential/symbolic/pde/scalar.py b/pytential/symbolic/pde/scalar.py index 2f3ab96f5..6fbd01359 100644 --- a/pytential/symbolic/pde/scalar.py +++ b/pytential/symbolic/pde/scalar.py @@ -517,7 +517,6 @@ def Sp(density: ArithmeticExpression) -> ArithmeticExpression: Dp1 = sym.Dp( laplace, laplace_s_inv_sqrt_w_u, qbx_forced_limit=+1, - kernel_arguments=kernel_arguments, source=dofdesc, target=dofdesc) DpS0u = Dp0 - Dp1 + Dp0S0u diff --git a/pytential/symbolic/primitives.py b/pytential/symbolic/primitives.py index 02e075ea6..822530ad2 100644 --- a/pytential/symbolic/primitives.py +++ b/pytential/symbolic/primitives.py @@ -95,6 +95,8 @@ from pymbolic.primitives import CommonSubexpression, Quotient +# {{{ docs + __doc__ = """ .. |dofdesc-blurb| replace:: A :class:`~pytential.symbolic.dof_desc.DOFDescriptor` or a symbolic @@ -104,35 +106,34 @@ Object types ^^^^^^^^^^^^ + Based on the mathematical quantity being represented, the following types of objects occur as part of a symbolic operator representation: -* If a quantity is a scalar, it is just a symbolic expression--that is, an +* If a quantity is a scalar, it is just a symbolic expression -- that is, an element of the set of formal expressions recursively generated by the placeholders (see :ref:`placeholders`), constants, and arithmetic operations - on them (see :mod:`pymbolic.primitives`). Objects of this type are created + on them (see :mod:`pymbolic.primitives`). Objects of this type are created simply by doing arithmetic on placeholders and scalar constants. * If the quantity is "just a bunch of scalars" (like, say, rows in a system of integral equations), the symbolic representation is an object array. Each element of the object array contains a symbolic expression. - - :func:`pytools.obj_array.new_1d` and - :func:`pytools.obj_array.flat` - can help create those. + :func:`pytools.obj_array.new_1d` and :func:`pytools.obj_array.flat` can + help create those. * If it is a geometric quantity (that makes sense without explicit reference to coordinates), it is a :class:`pymbolic.geometric_algebra.MultiVector`. - This can be converted to an object array by calling: - :meth:`pymbolic.geometric_algebra.MultiVector.as_vector`. + This can be converted to an object array by calling + :meth:`~pymbolic.geometric_algebra.MultiVector.as_vector`. -:class:`meshmode.dof_array.DOFArray` instances hold per-node degrees of freedom +:class:`~meshmode.dof_array.DOFArray` instances hold per-node degrees of freedom (and only those). Such instances do *not* occur on the symbolic side of :mod:`pytential` at all. They're only visible either as bound inputs (see :func:`pytential.bind`) or outputs of evaluation. Which one is used depends on the meaning of the data being represented. If the data is associated with a :class:`~meshmode.discretization.Discretization`, then -:class:`~meshmode.dof_array.DOFArray` is used and otherwise a base array +:class:`~meshmode.dof_array.DOFArray` is used. Otherwise a base array type for the underlying :class:`~arraycontext.ArrayContext` is used. .. autoclass:: ExpressionNode @@ -224,6 +225,12 @@ :undoc-members: :members: mapper_method +.. autoclass:: Ones + :show-inheritance: + :undoc-members: + :members: mapper_method + +.. autofunction:: ones_vec .. autofunction:: nodes .. autofunction:: parametrization_derivative .. autofunction:: parametrization_derivative_matrix @@ -289,20 +296,9 @@ .. autofunction:: integral -.. autoclass:: Ones - :show-inheritance: - :undoc-members: - :members: mapper_method - -.. autofunction:: ones_vec .. autofunction:: area .. autofunction:: mean -.. autoclass:: IterativeInverse - :show-inheritance: - :undoc-members: - :members: mapper_method - Operators ^^^^^^^^^ @@ -313,6 +309,11 @@ .. autofunction:: interpolate +.. autoclass:: IterativeInverse + :show-inheritance: + :undoc-members: + :members: mapper_method + Geometric Calculus (based on Geometric/Clifford Algebra) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -370,6 +371,8 @@ .. autofunction:: pretty """ +# }}} + __all__ = ( # ruff:ignore[unsorted-dunder-all] # re-export from pymbolic "Variable", @@ -409,8 +412,10 @@ "expansion_radii", "expansion_centers", "h_max", "weights_and_area_elements", - "NumReferenceDerivative", "NodeSum", "NodeMax", "NodeMin", "ElementwiseSum", - "ElementwiseMax", "integral", "Ones", "ones_vec", "area", "mean", + "NumReferenceDerivative", "NodeSum", "NodeMax", "NodeMin", "node_sum", + "node_max", "node_min", "ElementwiseSum", "ElementwiseMax", "ElementwiseMin", + "elementwise_sum", "elementwise_max", "elementwise_min", "integral", "Ones", + "ones_vec", "area", "mean", "IterativeInverse", "Interpolation", "interpolate", @@ -490,7 +495,7 @@ def for_each_expression( ) -> Callable[Concatenate[OperandTc, P], OperandTc]: """A decorator that takes a function that can only work on expressions and transforms it into a function that can be applied componentwise on - :class:`numpy.ndarray` or :class:`~pymbolic.geometric_algebra.MultiVector`. + object :class:`numpy.ndarray` or :class:`~pymbolic.geometric_algebra.MultiVector`. """ from functools import wraps @@ -507,9 +512,29 @@ def func(operand_i: ArithmeticExpression) -> ArithmeticExpression: return wrapper + +def make_sym_mv(name: str, num_components: int) -> MultiVector[ArithmeticExpression]: + return MultiVector(make_sym_vector(name, num_components)) + + +def make_sym_surface_mv( + name: str, + ambient_dim: int, + dim: int, + dofdesc: DOFDescriptorLike = None + ) -> MultiVector[ArithmeticExpression]: + par_grad = parametrization_derivative_matrix(ambient_dim, dim, dofdesc) + + return sum( + var(f"{name}{i}") + * cse(MultiVector(vec), f"tangent{i}", cse_scope.DISCRETIZATION) + for i, vec in enumerate(par_grad.T)) + # }}} +# {{{ internal + @expr_dataclass() class NamedIntermediateResult(Variable): """Internal variables used by ``pytential.compiler``.""" @@ -526,24 +551,10 @@ class ErrorExpression(ExpressionNode): message: str """The error message to raise when this expression is encountered.""" +# }}} -def make_sym_mv(name: str, num_components: int) -> MultiVector[ArithmeticExpression]: - return MultiVector(make_sym_vector(name, num_components)) - - -def make_sym_surface_mv( - name: str, - ambient_dim: int, - dim: int, - dofdesc: DOFDescriptorLike = None - ) -> MultiVector[ArithmeticExpression]: - par_grad = parametrization_derivative_matrix(ambient_dim, dim, dofdesc) - - return sum( - var(f"{name}{i}") - * cse(MultiVector(vec), f"tangent{i}", cse_scope.DISCRETIZATION) - for i, vec in enumerate(par_grad.T)) +# {{{ function @expr_dataclass() class Function(Variable): @@ -616,6 +627,8 @@ class NumpyMathFunction(Function): exp = NumpyMathFunction("exp") log = NumpyMathFunction("log") +# }}} + # {{{ discretization properties @@ -633,7 +646,7 @@ def __post_init__(self) -> None: if not isinstance(self.dofdesc, DOFDescriptor): warn("Passing a 'dofdesc' that is not a 'DOFDescriptor' to " f"{type(self).__name__!r} is deprecated and will stop working " - "in 2025. Use 'as_dofdesc' to convert the descriptor.", + "in 2027. Use 'as_dofdesc' to convert the descriptor.", DeprecationWarning, stacklevel=2) object.__setattr__(self, "dofdesc", as_dofdesc(self.dofdesc)) @@ -661,6 +674,30 @@ class QWeight(DiscretizationProperty): """Bare quadrature weights (without Jacobians).""" +@expr_dataclass() +class Ones(ExpressionNode): + """A DOF-vector that is constant *one* on the whole discretization. + """ + + dofdesc: DOFDescriptor = field(default_factory=lambda: DEFAULT_DOFDESC) + """A descriptor for the discretization where the array is defined.""" + + def __post_init__(self) -> None: + if not isinstance(self.dofdesc, DOFDescriptor): + warn("Passing a 'dofdesc' that is not a 'DOFDescriptor' to " + f"{type(self).__name__!r} is deprecated and will stop working " + "in 2027. Use 'as_dofdesc' to convert the descriptor.", + DeprecationWarning, stacklevel=2) + + object.__setattr__(self, "dofdesc", as_dofdesc(self.dofdesc)) + + +def ones_vec(dim: int, + dofdesc: DOFDescriptorLike = None) -> MultiVector[ArithmeticExpression]: + dofdesc = as_dofdesc(dofdesc) + return MultiVector(obj_array.new_1d(dim*[Ones(dofdesc)])) + + @expr_dataclass(init=False) class NodeCoordinateComponent(DiscretizationProperty): """ @@ -668,7 +705,7 @@ class NodeCoordinateComponent(DiscretizationProperty): """ ambient_axis: int - """The axis index this node coordinate represents, i.e. 0 for $x$, etc.""" + """The axis index this node coordinate represents, i.e. 0 for :math:`x`, etc.""" # FIXME: this is added for backwards compatibility with pre-dataclass expressions def __init__(self, @@ -705,7 +742,8 @@ class NumReferenceDerivative(DiscretizationProperty): derivatives taken on the given *operand*. The tuple must be sorted with respect to the axis index. For example, ``((0, 2), (1, 1))`` is a correct input as it is sorted and each axis is unique. It denotes a second derivative - with respect to $x$ (0) and a first derivative with respect to $y$ (1). + with respect to :math:`x` (0) and a first derivative with respect to :math:`y` + (1). """ operand: ArithmeticExpression """An operand to differentiate.""" @@ -717,7 +755,7 @@ def __new__(cls, ) -> NumReferenceDerivative | OperandTc: if isinstance(operand, ObjectArray | MultiVector): warn(f"Passing {type(operand)} directly to {cls.__name__!r} " - "is deprecated and will result in an error from 2025. Use " + "is deprecated and will result in an error from 2027. Use " "the 'num_reference_derivative' function instead.", DeprecationWarning, stacklevel=3) @@ -737,7 +775,7 @@ def __init__(self, dofdesc: DOFDescriptorLike) -> None: if isinstance(ref_axes, int): warn(f"Passing an 'int' as 'ref_axes' to {type(self).__name__!r} " - "is deprecated and will result in an error in 2025. Pass the " + "is deprecated and will result in an error in 2027. Pass the " "well-formatted tuple '((ref_axes, 1),)' instead.", DeprecationWarning, stacklevel=2) @@ -855,6 +893,7 @@ def area_element( dim: int | None = None, dofdesc: DOFDescriptorLike = None, ) -> ArithmeticExpression: + r"""The surface area element, :math:`\sqrt{|g|}`.""" return cse( sqrt(pseudoscalar(ambient_dim, dim, dofdesc).norm_squared()), "area_element", cse_scope.DISCRETIZATION) @@ -865,6 +904,9 @@ def sqrt_jac_q_weight( dim: int | None = None, dofdesc: DOFDescriptorLike = None, ) -> ArithmeticExpression: + """The square root of the product of the surface area element and + quadrature weights. + """ dofdesc = as_dofdesc(dofdesc) return cse( sqrt( @@ -929,6 +971,7 @@ def first_fundamental_form( dim: int | None = None, dofdesc: DOFDescriptorLike = None, ) -> ObjectArray2D[ArithmeticExpression]: + """The first fundamental form :math:`I = J^T J` of the surface parametrization.""" if dim is None: dim = ambient_dim - 1 @@ -1006,6 +1049,10 @@ def shape_operator( 1/(E*G-F*F)*from_numpy(result), "shape_operator") +# }}} + + +# {{{ qbx-specific geometry def _element_size( ambient_dim: int, @@ -1250,10 +1297,6 @@ def _scaled_max_curvature( _max_curvature(ambient_dim, dim, dofdesc=dofdesc) * _mapping_max_stretch_factor(ambient_dim, dim=dim, dofdesc=dofdesc)) -# }}} - - -# {{{ qbx-specific geometry def _expansion_radii_factor(ambient_dim: int, dim: int | None) -> float: if dim is None: @@ -1274,7 +1317,7 @@ def _quad_resolution( should be the same as the element length. In multiple dimensions (i.e. with multiple quadrature resolutions - depending on direction), this measure returns the coarsest of these resolution, + depending on direction), this measure returns the coarsest of these resolutions, is invariant with respect to rotation of the global coordinate system, and invariant with respect to vertex ordering of the reference element. @@ -1439,7 +1482,7 @@ def __new__(cls, if isinstance(operand, ObjectArray | MultiVector): warn(f"Passing {type(operand)} directly to {cls.__name__!r} " - "is deprecated and will result in an error from 2025. Use " + "is deprecated and will result in an error from 2027. Use " "the 'interpolate' function instead.", DeprecationWarning, stacklevel=3) @@ -1454,7 +1497,7 @@ def __post_init__(self) -> None: if not isinstance(self.from_dd, DOFDescriptor): warn("Passing a 'from_dd' that is not a 'DOFDescriptor' to " f"{type(self).__name__!r} is deprecated and will stop working " - "in 2025. Use 'as_dofdesc' to convert the descriptor.", + "in 2027. Use 'as_dofdesc' to convert the descriptor.", DeprecationWarning, stacklevel=2) object.__setattr__(self, "from_dd", as_dofdesc(self.from_dd)) @@ -1462,7 +1505,7 @@ def __post_init__(self) -> None: if not isinstance(self.to_dd, DOFDescriptor): warn("Passing a 'to_dd' that is not a 'DOFDescriptor' to " f"{type(self).__name__!r} is deprecated and will stop working " - "in 2025. Use 'as_dofdesc' to convert the descriptor.", + "in 2027. Use 'as_dofdesc' to convert the descriptor.", DeprecationWarning, stacklevel=2) object.__setattr__(self, "to_dd", as_dofdesc(self.to_dd)) @@ -1507,6 +1550,44 @@ def interleave( return Interleave(dof_desc, operand_1, operand_2) +@expr_dataclass() +class IterativeInverse(ExpressionNode): + """A symbolic :math:`A x = b` linear solve expression. + + .. autoattribute:: expression + .. autoattribute:: rhs + .. autoattribute:: variable_name + .. autoattribute:: extra_vars + .. autoattribute:: dofdesc + """ + + expression: ArithmeticExpression + """The operator *A* used in the linear solve.""" + rhs: ArithmeticExpression + """The right-hand side variable used in the linear solve.""" + variable_name: str + """The name of the variable to solve for.""" + + extra_vars: dict[str, Expression] = field(default_factory=dict) + """A dictionary of additional variables required to define the operator.""" + + dofdesc: DOFDescriptor = field(default_factory=lambda: DEFAULT_DOFDESC) + """A descriptor for the geometry on which the solution is defined.""" + + def __post_init__(self) -> None: + if not isinstance(self.dofdesc, DOFDescriptor): + warn("Passing a 'dofdesc' that is not a 'DOFDescriptor' to " + f"{type(self).__name__!r} is deprecated and will stop working " + "in 2027. Use 'as_dofdesc' to convert the descriptor.", + DeprecationWarning, stacklevel=2) + + object.__setattr__(self, "dofdesc", as_dofdesc(self.dofdesc)) + +# }}} + + +# {{{ reductions + @expr_dataclass() class SingleScalarOperandExpression(ExpressionNode): """ @@ -1522,7 +1603,7 @@ def __new__(cls, if isinstance(operand, ObjectArray | MultiVector): name = cls.mapper_method[4:] warn(f"Passing {type(operand)} directly to {cls.__name__!r} " - "is deprecated and will result in an error from 2025. Use " + "is deprecated and will result in an error from 2027. Use " f"the '{name}' function instead.", DeprecationWarning, stacklevel=3) @@ -1579,7 +1660,7 @@ def integral( operand: OperandTc, dofdesc: DOFDescriptorLike = None, ) -> OperandTc: - """A volume integral of *operand*.""" + """A surface integral of *operand*.""" dofdesc = as_dofdesc(dofdesc) return node_sum( @@ -1608,7 +1689,7 @@ def __new__(cls, if isinstance(operand, ObjectArray | MultiVector): name = cls.mapper_method[4:] warn(f"Passing {type(operand)} directly to {cls.__name__!r} " - "is deprecated and will result in an error from 2025. Use " + "is deprecated and will result in an error from 2027. Use " f"the '{name}' function instead.", DeprecationWarning, stacklevel=2) @@ -1623,7 +1704,7 @@ def __post_init__(self) -> None: if not isinstance(self.dofdesc, DOFDescriptor): warn("Passing a 'dofdesc' that is not a 'DOFDescriptor' to " f"{type(self).__name__!r} is deprecated and will stop working " - "in 2025. Use 'as_dofdesc' to convert the descriptor.", + "in 2027. Use 'as_dofdesc' to convert the descriptor.", DeprecationWarning, stacklevel=2) object.__setattr__(self, "dofdesc", as_dofdesc(self.dofdesc)) @@ -1674,30 +1755,6 @@ def elementwise_max(expr: ArithmeticExpression, return ElementwiseMax(expr, as_dofdesc(dofdesc)) -@expr_dataclass() -class Ones(ExpressionNode): - """A DOF-vector that is constant *one* on the whole discretization. - """ - - dofdesc: DOFDescriptor = field(default_factory=lambda: DEFAULT_DOFDESC) - """A descriptor for the discretization where the array is defined.""" - - def __post_init__(self) -> None: - if not isinstance(self.dofdesc, DOFDescriptor): - warn("Passing a 'dofdesc' that is not a 'DOFDescriptor' to " - f"{type(self).__name__!r} is deprecated and will stop working " - "in 2025. Use 'as_dofdesc' to convert the descriptor.", - DeprecationWarning, stacklevel=2) - - object.__setattr__(self, "dofdesc", as_dofdesc(self.dofdesc)) - - -def ones_vec(dim: int, - dofdesc: DOFDescriptorLike = None) -> MultiVector[ArithmeticExpression]: - dofdesc = as_dofdesc(dofdesc) - return MultiVector(obj_array.new_1d(dim*[Ones(dofdesc)])) - - def area(ambient_dim: int, dim: int, dofdesc: DOFDescriptorLike = None) -> ArithmeticExpression: @@ -1715,45 +1772,17 @@ def mean(ambient_dim: int, integral(ambient_dim, dim, operand, dofdesc) / area(ambient_dim, dim, dofdesc)) +# }}} -@expr_dataclass() -class IterativeInverse(ExpressionNode): - """A symbolic :math:`A x = b` linear solve expression. - - .. autoattribute:: expression - .. autoattribute:: rhs - .. autoattribute:: variable_name - .. autoattribute:: extra_vars - .. autoattribute:: dofdesc - """ - - expression: ArithmeticExpression - """The operator *A* used in the linear solve.""" - rhs: ArithmeticExpression - """The right-hand side variable used in the linear solve.""" - variable_name: str - """The name of the variable to solve for.""" - - extra_vars: dict[str, Expression] = field(default_factory=dict) - """A dictionary of additional variables required to define the operator.""" - - dofdesc: DOFDescriptor = field(default_factory=lambda: DEFAULT_DOFDESC) - """A descriptor for the geometry on which the solution is defined.""" - - def __post_init__(self) -> None: - if not isinstance(self.dofdesc, DOFDescriptor): - warn("Passing a 'dofdesc' that is not a 'DOFDescriptor' to " - f"{type(self).__name__!r} is deprecated and will stop working " - "in 2025. Use 'as_dofdesc' to convert the descriptor.", - DeprecationWarning, stacklevel=2) - - object.__setattr__(self, "dofdesc", as_dofdesc(self.dofdesc)) +# {{{ derivatives class Derivative(DerivativeBase): """A symbolic derivative. - This mechanism cannot be used to take more than one derivative at a time. + This mechanism cannot be used to take more than one derivative at a time. To + construct higher-level derivatives, the operator must be nested repeatedly + instead. .. automethod:: __call__ .. automethod:: dnabla @@ -1835,6 +1864,8 @@ def laplace(ambient_dim: int, operand: ArithmeticExpression) -> ArithmeticExpres | d(d.resolve(nabla * d(operand))) ).as_scalar() +# }}} + # {{{ potentials @@ -1900,12 +1931,12 @@ class IntG(ExpressionNode): * ``'avg'``: may be used as a shorthand to evaluate this potential as an average of the ``+1`` and the ``-1`` value. * ``+2`` may be used to *allow* evaluation QBX center on the "+" side of the - (but disallow evaluation using a center on the "-" side). + boundary (but disallow evaluation using a center on the "-" side). * ``-2``: for the "-" side. Evaluation at a target with a value of ``±1`` in *qbx_forced_limit* will fail if no QBX center is found. To allow potential evaluation at the target - to succeeds even if no applicable QBX center is found use ``±2``. + to succeed even if no applicable QBX center is found use ``±2``. """ source: DOFDescriptor = field(default_factory=lambda: DEFAULT_DOFDESC) @@ -1951,7 +1982,7 @@ def __init__( if kwargs: warn(f"Passing named '**kwargs' to {type(self).__name__!r} is " - "deprecated and will result in an error in 2025. Use the " + "deprecated and will result in an error in 2027. Use the " "'kernel_arguments' argument instead.", DeprecationWarning, stacklevel=2) @@ -1984,20 +2015,20 @@ def __post_init__(self) -> None: if not isinstance(self.source_kernels, tuple): warn(f"'source_kernels' is not tuple ({type(self.source_kernels)}). " "Passing a different type is deprecated and will stop working in " - "2025.", DeprecationWarning, stacklevel=2) + "2027.", DeprecationWarning, stacklevel=2) object.__setattr__(self, "source_kernels", tuple(self.source_kernels)) if not isinstance(self.densities, tuple): warn(f"'densities' is not tuple ({type(self.densities)}). " "Passing a different type is deprecated and will stop working in " - "2025.", DeprecationWarning, stacklevel=2) + "2027.", DeprecationWarning, stacklevel=2) object.__setattr__(self, "densities", tuple(self.densities)) if not isinstance(self.source, DOFDescriptor): warn("Passing a 'source' descriptor that is not a 'DOFDescriptor' to " f"{type(self).__name__!r} is deprecated and will stop working " - "in 2025. Use 'as_dofdesc' to convert the descriptor.", + "in 2027. Use 'as_dofdesc' to convert the descriptor.", DeprecationWarning, stacklevel=2) object.__setattr__(self, "source", as_dofdesc(self.source)) @@ -2005,7 +2036,7 @@ def __post_init__(self) -> None: if not isinstance(self.target, DOFDescriptor): warn("Passing a 'target' descriptor that is not a 'DOFDescriptor' to " f"{type(self).__name__!r} is deprecated and will stop working " - "in 2025. Use 'as_dofdesc' to convert the descriptor.", + "in 2027. Use 'as_dofdesc' to convert the descriptor.", DeprecationWarning, stacklevel=2) object.__setattr__(self, "target", as_dofdesc(self.target)) @@ -2015,7 +2046,7 @@ def __post_init__(self) -> None: "'kernel_arguments' is not a constantdict " f"({type(self.kernel_arguments)}). " "Passing a different type is deprecated and will stop being " - "supported in 2025.", DeprecationWarning, stacklevel=2) + "supported in 2027.", DeprecationWarning, stacklevel=2) kernel_arguments = self.kernel_arguments if self.kernel_arguments else {} object.__setattr__(self, "kernel_arguments", constantdict(kernel_arguments)) @@ -2031,22 +2062,19 @@ def __post_init__(self) -> None: kernel_arg_names.add(karg.loopy_arg.name) provided_arg_names = set(self.kernel_arguments.keys()) - missing_args = kernel_arg_names - provided_arg_names - if missing_args: + if missing_args := (kernel_arg_names - provided_arg_names): raise ValueError( "Kernel argument(s) not supplied: '{}'".format(", ".join(missing_args)) ) - # FIXME: this check is clearly wrong :( - extra_args = provided_arg_names - kernel_arg_names - if missing_args: + if extra_args := (provided_arg_names - kernel_arg_names): raise ValueError( "Kernel argument(s) not recognized: '{}'".format(", ".join(extra_args)) ) def copy(self, **kwargs: Any) -> IntG: warn(f"'{type(self).__name__}.copy' is deprecated and will be removed in " - f"2025. {type(self)} is a dataclass now and can use " + f"2027. {type(self)} is a dataclass now and can use " "'dataclasses.replace'.", DeprecationWarning, stacklevel=2) from dataclasses import replace @@ -2180,13 +2208,6 @@ def add_dir_vector_to_kernel_arguments(coeff: ArithmeticExpression) -> Operand: density = cse(density) return (dsource*nabla).map(add_dir_vector_to_kernel_arguments) -# }}} - - -# {{{ non-dimension-specific operators - -# {{{ geometric calculus - class _unspecified: # ruff:ignore[invalid-class-name] pass @@ -2439,10 +2460,6 @@ def Dp( # }}} -# }}} - -# }}} - # {{{ conventional vector calculus @@ -2505,6 +2522,7 @@ def project_to_tangential( xyz_vec: ObjectArray1D[ArithmeticExpression], dofdesc: DOFDescriptorLike = None, ) -> ObjectArray1D[ArithmeticExpression]: + """Project a vector onto the tangential space of the surface.""" return tangential_to_xyz( cse(xyz_to_tangential(xyz_vec, dofdesc)), dofdesc) @@ -2514,6 +2532,7 @@ def n_dot( vec: ObjectArray1D[ArithmeticExpression], dofdesc: DOFDescriptorLike = None, ) -> ArithmeticExpression: + """The dot product of *vec* with the surface unit normal.""" nrm = normal(len(vec), dofdesc=dofdesc).as_vector() return nrm @ vec @@ -2523,6 +2542,7 @@ def cross( vec_a: ObjectArray1D[ArithmeticExpression], vec_b: ObjectArray1D[ArithmeticExpression], ) -> ObjectArray1D[ArithmeticExpression]: + r"""The cross product :math:`\mathbf{a} \times \mathbf{b}` of two 3D vectors.""" assert len(vec_a) == len(vec_b) == 3 from pytools import levi_civita @@ -2537,6 +2557,7 @@ def n_cross( vec: ObjectArray1D[ArithmeticExpression], dofdesc: DOFDescriptorLike = None, ) -> ObjectArray1D[ArithmeticExpression]: + """The cross product of the surface unit normal with *vec*.""" return cross(normal(3, dofdesc=dofdesc).as_vector(), vec)