diff --git a/.basedpyright/baseline.json b/.basedpyright/baseline.json index 41d3b058..b58a6250 100644 --- a/.basedpyright/baseline.json +++ b/.basedpyright/baseline.json @@ -1213,78 +1213,6 @@ } ], "./sumpy/codegen.py": [ - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 8, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 28, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 28, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 21, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 24, - "endColumn": 63, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 70, - "endColumn": 74, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 27, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 27, - "endColumn": 61, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -1302,18 +1230,10 @@ } }, { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 58, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", + "code": "reportAttributeAccessIssue", "range": { - "startColumn": 65, - "endColumn": 69, + "startColumn": 57, + "endColumn": 61, "lineCount": 1 } }, @@ -12999,14 +12919,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 31, - "endColumn": 73, - "lineCount": 2 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -18848,10 +18760,10 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 46, + "startColumn": 47, + "endColumn": 68, "lineCount": 1 } }, @@ -26973,14 +26885,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 31, - "endColumn": 50, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -27446,10 +27350,10 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 28, - "endColumn": 47, + "startColumn": 48, + "endColumn": 69, "lineCount": 1 } }, @@ -27501,14 +27405,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 32, - "endColumn": 51, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -27565,14 +27461,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 34, - "endColumn": 53, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -27582,10 +27470,10 @@ } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 45, + "startColumn": 46, + "endColumn": 67, "lineCount": 1 } }, @@ -39571,14 +39459,6 @@ } ], "./sumpy/symbolic.py": [ - { - "code": "reportMissingTypeStubs", - "range": { - "startColumn": 7, - "endColumn": 12, - "lineCount": 1 - } - }, { "code": "reportMissingTypeStubs", "range": { @@ -39595,22 +39475,6 @@ "lineCount": 1 } }, - { - "code": "reportConstantRedefinition", - "range": { - "startColumn": 8, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportConstantRedefinition", - "range": { - "startColumn": 8, - "endColumn": 21, - "lineCount": 1 - } - }, { "code": "reportMissingTypeStubs", "range": { @@ -39651,14 +39515,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 4, - "endColumn": 16, - "lineCount": 1 - } - }, { "code": "reportUnusedFunction", "range": { @@ -39668,1683 +39524,483 @@ } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 17, - "endColumn": 18, + "startColumn": 15, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportCallIssue", "range": { - "startColumn": 17, - "endColumn": 18, + "startColumn": 16, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 7, - "endColumn": 15, + "startColumn": 16, + "endColumn": 57, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportArgumentType", "range": { - "startColumn": 12, - "endColumn": 18, + "startColumn": 39, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 11, - "endColumn": 22, + "startColumn": 4, + "endColumn": 15, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownParameterType", "range": { - "startColumn": 27, - "endColumn": 40, + "startColumn": 16, + "endColumn": 21, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportMissingParameterType", "range": { - "startColumn": 8, - "endColumn": 23, + "startColumn": 16, + "endColumn": 21, "lineCount": 1 } }, { "code": "reportUnknownParameterType", "range": { - "startColumn": 24, - "endColumn": 25, + "startColumn": 23, + "endColumn": 30, "lineCount": 1 } }, { "code": "reportMissingParameterType", "range": { - "startColumn": 24, - "endColumn": 25, + "startColumn": 23, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 33, + "endColumn": 40, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 17, + "startColumn": 41, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 13, - "endColumn": 17, + "startColumn": 50, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 25, + "startColumn": 50, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 25, + "startColumn": 50, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 28, + "startColumn": 50, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 28, + "startColumn": 50, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 23, - "endColumn": 24, + "startColumn": 50, + "endColumn": 56, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 26, - "endColumn": 27, + "startColumn": 37, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 12, + "startColumn": 37, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 13, - "endColumn": 17, + "startColumn": 24, + "endColumn": 33, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportArgumentType", "range": { - "startColumn": 13, - "endColumn": 17, + "startColumn": 41, + "endColumn": 56, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 15, - "endColumn": 24, + "startColumn": 27, + "endColumn": 32, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 24, - "endColumn": 25, + "startColumn": 16, + "endColumn": 29, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 25, + "startColumn": 17, + "endColumn": 20, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 27, - "endColumn": 28, + "startColumn": 32, + "endColumn": 88, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportReturnType", "range": { - "startColumn": 27, - "endColumn": 28, + "startColumn": 23, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportReturnType", "range": { "startColumn": 23, - "endColumn": 24, + "endColumn": 37, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportMissingTypeStubs", "range": { - "startColumn": 26, - "endColumn": 27, + "startColumn": 5, + "endColumn": 10, "lineCount": 1 } }, { - "code": "reportMissingTypeArgument", + "code": "reportOperatorIssue", "range": { - "startColumn": 24, - "endColumn": 42, + "startColumn": 35, + "endColumn": 46, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 8, - "endColumn": 22, + "startColumn": 35, + "endColumn": 46, "lineCount": 1 } - }, + } + ], + "./sumpy/test/curve.py": [ { - "code": "reportUnknownParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 33, + "startColumn": 19, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 29, - "endColumn": 33, + "startColumn": 22, + "endColumn": 55, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 42, - "endColumn": 56, + "startColumn": 8, + "endColumn": 15, "lineCount": 1 } - }, + } + ], + "./sumpy/test/geometries.py": [ { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 42, - "endColumn": 56, + "startColumn": 4, + "endColumn": 8, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportUnknownArgumentType", "range": { - "startColumn": 60, - "endColumn": 70, + "startColumn": 20, + "endColumn": 60, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 60, - "endColumn": 70, + "startColumn": 21, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportImplicitOverride", + "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 24, + "startColumn": 28, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 31, - "endColumn": 35, + "startColumn": 28, + "endColumn": 38, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 31, - "endColumn": 35, + "startColumn": 28, + "endColumn": 36, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 24, - "endColumn": 34, + "startColumn": 14, + "endColumn": 22, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 24, - "endColumn": 34, + "startColumn": 4, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 31, - "endColumn": 42, + "startColumn": 4, + "endColumn": 10, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 31, - "endColumn": 42, + "startColumn": 4, + "endColumn": 11, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 44, - "endColumn": 50, + "startColumn": 28, + "endColumn": 35, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 28, - "endColumn": 44, + "startColumn": 8, + "endColumn": 18, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 28, - "endColumn": 46, + "startColumn": 8, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 16, + "endColumn": 24, "lineCount": 1 } }, { - "code": "reportMissingParameterType", + "code": "reportAny", "range": { - "startColumn": 25, - "endColumn": 29, + "startColumn": 26, + "endColumn": 34, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 34, - "endColumn": 57, + "startColumn": 36, + "endColumn": 44, "lineCount": 1 } }, { - "code": "reportUnknownMemberType", + "code": "reportAny", "range": { - "startColumn": 8, - "endColumn": 21, + "startColumn": 16, + "endColumn": 25, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 20, - "endColumn": 24, + "startColumn": 27, + "endColumn": 36, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 37, - "endColumn": 58, - "lineCount": 2 + "startColumn": 38, + "endColumn": 47, + "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 16, - "endColumn": 38, + "startColumn": 8, + "endColumn": 16, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnusedExpression", "range": { - "startColumn": 16, - "endColumn": 57, + "startColumn": 8, + "endColumn": 11, "lineCount": 1 } }, { "code": "reportUnknownMemberType", "range": { - "startColumn": 8, - "endColumn": 31, + "startColumn": 14, + "endColumn": 27, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportUnknownMemberType", "range": { - "startColumn": 32, - "endColumn": 36, + "startColumn": 14, + "endColumn": 39, "lineCount": 1 } }, { "code": "reportUnknownArgumentType", "range": { - "startColumn": 29, - "endColumn": 33, + "startColumn": 14, + "endColumn": 41, "lineCount": 1 } }, { - "code": "reportUnknownArgumentType", + "code": "reportAny", "range": { - "startColumn": 21, - "endColumn": 27, + "startColumn": 16, + "endColumn": 30, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", + "code": "reportAny", "range": { - "startColumn": 4, - "endColumn": 15, + "startColumn": 16, + "endColumn": 42, "lineCount": 1 } }, { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 16, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 16, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 23, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 23, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 33, - "endColumn": 40, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 41, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 50, - "endColumn": 56, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 50, - "endColumn": 56, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 50, - "endColumn": 56, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 50, - "endColumn": 56, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 50, - "endColumn": 56, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 50, - "endColumn": 56, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 37, - "endColumn": 42, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 37, - "endColumn": 46, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 27, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 20, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 20, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 19, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 25, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 25, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 23, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 30, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 33, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 4, - "endColumn": 19, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 20, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 20, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 26, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 26, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 36, - "endColumn": 42, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 36, - "endColumn": 42, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 27, - "endColumn": 40, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 46, - "endColumn": 57, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 59, - "endColumn": 70, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 22, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 22, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 26, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 26, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 4, - "endColumn": 17, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 18, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 18, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 24, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 24, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 8, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 35, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 35, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 15, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 18, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 25, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 25, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 46, - "endColumn": 50, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 15, - "endColumn": 51, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 58, - "endColumn": 62, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 8, - "endColumn": 15, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 15, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 22, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 22, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 19, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 30, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 30, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 52, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 59, - "endColumn": 63, - "lineCount": 1 - } - }, - { - "code": "reportIncompatibleMethodOverride", - "range": { - "startColumn": 8, - "endColumn": 15, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 15, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 22, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 22, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 32, - "endColumn": 40, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 56, - "endColumn": 64, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 16, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 32, - "endColumn": 40, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 25, - "endColumn": 33, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 47, - "endColumn": 55, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 8, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 27, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 27, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 20, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 60, - "endColumn": 64, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 21, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 28, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 28, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 22, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 68, - "endColumn": 78, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 40, - "endColumn": 44, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 8, - "endColumn": 16, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 16, - "lineCount": 1 - } - }, - { - "code": "reportUnknownParameterType", - "range": { - "startColumn": 23, - "endColumn": 27, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 23, - "endColumn": 27, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 11, - "endColumn": 29, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 29, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 49, - "endColumn": 64, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 26, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 13, - "endColumn": 31, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 29, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 49, - "endColumn": 64, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 12, - "endColumn": 23, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 28, - "endColumn": 32, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 56, - "endColumn": 60, - "lineCount": 1 - } - }, - { - "code": "reportMissingTypeStubs", - "range": { - "startColumn": 7, - "endColumn": 12, - "lineCount": 1 - } - }, - { - "code": "reportUnannotatedClassAttribute", - "range": { - "startColumn": 4, - "endColumn": 9, - "lineCount": 1 - } - }, - { - "code": "reportImplicitOverride", - "range": { - "startColumn": 8, - "endColumn": 13, - "lineCount": 1 - } - }, - { - "code": "reportMissingParameterType", - "range": { - "startColumn": 20, - "endColumn": 28, - "lineCount": 1 - } - }, - { - "code": "reportOperatorIssue", - "range": { - "startColumn": 35, - "endColumn": 44, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 35, - "endColumn": 44, - "lineCount": 1 - } - } - ], - "./sumpy/test/curve.py": [ - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 41, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 22, - "endColumn": 55, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 8, - "endColumn": 15, - "lineCount": 1 - } - } - ], - "./sumpy/test/geometries.py": [ - { - "code": "reportAny", - "range": { - "startColumn": 4, - "endColumn": 8, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 20, - "endColumn": 60, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 41, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 28, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 28, - "endColumn": 38, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 28, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 22, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 4, - "endColumn": 11, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 4, - "endColumn": 10, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 4, - "endColumn": 11, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 28, - "endColumn": 35, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 8, - "endColumn": 18, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 8, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 16, - "endColumn": 24, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 26, - "endColumn": 34, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 36, - "endColumn": 44, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 16, - "endColumn": 25, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 27, - "endColumn": 36, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 38, - "endColumn": 47, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 8, - "endColumn": 16, - "lineCount": 1 - } - }, - { - "code": "reportUnusedExpression", - "range": { - "startColumn": 8, - "endColumn": 11, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 27, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 14, - "endColumn": 39, - "lineCount": 1 - } - }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 14, - "endColumn": 41, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 16, - "endColumn": 30, - "lineCount": 1 - } - }, - { - "code": "reportAny", - "range": { - "startColumn": 16, - "endColumn": 42, - "lineCount": 1 - } - }, - { - "code": "reportAny", + "code": "reportAny", "range": { "startColumn": 16, "endColumn": 44, @@ -41489,14 +40145,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 27, - "endColumn": 28, - "lineCount": 1 - } - }, { "code": "reportUnknownArgumentType", "range": { @@ -47889,14 +46537,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -47953,14 +46593,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 21, - "endColumn": 29, - "lineCount": 1 - } - }, { "code": "reportUnknownMemberType", "range": { @@ -51781,14 +50413,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 22, - "endColumn": 41, - "lineCount": 1 - } - }, { "code": "reportAny", "range": { @@ -52245,14 +50869,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownArgumentType", - "range": { - "startColumn": 31, - "endColumn": 76, - "lineCount": 1 - } - }, { "code": "reportMissingTypeArgument", "range": { @@ -53861,22 +52477,6 @@ "lineCount": 1 } }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 37, - "lineCount": 1 - } - }, - { - "code": "reportUnknownMemberType", - "range": { - "startColumn": 19, - "endColumn": 36, - "lineCount": 1 - } - }, { "code": "reportAny", "range": { diff --git a/sumpy/codegen.py b/sumpy/codegen.py index f903464e..3215face 100644 --- a/sumpy/codegen.py +++ b/sumpy/codegen.py @@ -30,6 +30,7 @@ import numpy as np from constantdict import constantdict +from typing_extensions import override import loopy as lp import pymbolic.primitives as prim @@ -38,7 +39,7 @@ from pymbolic.typing import Expression from pytools import memoize_method -from sumpy.symbolic import SympyToPymbolicMapper as SympyToPymbolicMapperBase +import sumpy.symbolic as sym logger = logging.getLogger(__name__) @@ -63,23 +64,20 @@ def wrap_in_cse(expr: Expression, prefix: str | None = None) -> Expression: # {{{ sympy -> pymbolic mapper -import sumpy.symbolic as sym - - _SPECIAL_FUNCTION_NAMES = frozenset(dir(sym.functions)) -class SympyToPymbolicMapper(SympyToPymbolicMapperBase): - - def not_supported(self, expr): +class SympyToPymbolicMapper(sym.SympyToPymbolicMapper): + @override + def not_supported(self, expr: object) -> Expression: if isinstance(expr, int): return expr elif getattr(expr, "is_Function", False): - func_name = SympyToPymbolicMapperBase.function_name(self, expr) + func_name = sym.SympyToPymbolicMapper.function_name(self, expr) return prim.Variable(func_name)( *tuple(self.rec(arg) for arg in expr.args)) else: - return SympyToPymbolicMapperBase.not_supported(self, expr) + return sym.SympyToPymbolicMapper.not_supported(self, expr) # }}} diff --git a/sumpy/symbolic.py b/sumpy/symbolic.py index 0a14a5ec..5d7526e3 100644 --- a/sumpy/symbolic.py +++ b/sumpy/symbolic.py @@ -39,15 +39,19 @@ import logging import math -from typing import TYPE_CHECKING, ClassVar +from typing import TYPE_CHECKING, ClassVar, TypeAlias -import numpy as np -import sympy as sp +from typing_extensions import override import pymbolic.primitives as prim from pymbolic.mapper import IdentityMapper as IdentityMapperBase +if TYPE_CHECKING: + from pymbolic.typing import ArithmeticExpression, Expression + from pytools import T + from pytools.obj_array import ObjectArray1D + logger = logging.getLogger(__name__) USE_SYMENGINE = False @@ -82,9 +86,9 @@ def _find_symbolic_backend(): if backend == "symengine" and not symengine_found: raise RuntimeError(f"could not find SymEngine: {symengine_error}") - USE_SYMENGINE = (backend == "symengine") + USE_SYMENGINE = (backend == "symengine") # pyright: ignore[reportConstantRedefinition] else: - USE_SYMENGINE = symengine_found + USE_SYMENGINE = symengine_found # pyright: ignore[reportConstantRedefinition] _find_symbolic_backend() @@ -134,15 +138,18 @@ def _find_symbolic_backend(): Number = sym.Number Float = sym.Float +ArithmeticExpr: TypeAlias = int | float | complex | Expr + -def _coeff_isneg(a): +def _coeff_isneg(a: Basic) -> bool: if a.is_Mul: a = a.args[0] - return a.is_Number and a.is_negative + + return a.is_Number and bool(a.is_negative) if TYPE_CHECKING or USE_SYMENGINE: - def UnevaluatedExpr(x): # noqa: N802 + def UnevaluatedExpr(x: T) -> T: # noqa: N802 return x else: try: @@ -153,48 +160,51 @@ def UnevaluatedExpr(x): # noqa: N802 if USE_SYMENGINE: - def doit(expr): + def doit(expr: Expr) -> Expr: return expr - def unevaluated_pow(a, b): - return sym.Pow(a, b) + def unevaluated_pow(a: Expr, b: complex | Expr) -> ArithmeticExpr: + return Pow(a, b) else: - def doit(expr): + def doit(expr: Expr) -> Expr: return expr.doit() - def unevaluated_pow(a, b): - return sym.Pow(a, b, evaluate=False) + def unevaluated_pow(a: Expr, b: complex | Expr) -> ArithmeticExpr: + return Pow(a, b, evaluate=False) # {{{ debugging of sympy CSE via Maxima -class _DerivativeKiller(IdentityMapperBase): - def map_derivative(self, expr): - from pymbolic import var - return var("d_{}".format("_".join(expr.variables)))(expr.child) +class _DerivativeKiller(IdentityMapperBase[[]]): + @override + def map_derivative(self, expr: prim.Derivative) -> Expression: + return prim.Variable("d_{}".format("_".join(expr.variables)))(expr.child) - def map_substitution(self, expr): + @override + def map_substitution(self, expr: prim.Substitution) -> Expression: return self.rec(expr.child) -def _get_assignments_in_maxima(assignments, prefix=""): - my_variable_names = set(assignments.keys()) - written_assignments = set() +def _get_assignments_in_maxima( + assignments: dict[str, Basic], + prefix: str = "", + ) -> str: + variable_names = set(assignments.keys()) + written_assignments: set[str] = set() + prefix_subst_dict = {vn: f"{prefix}{vn}" for vn in variable_names} - prefix_subst_dict = { - vn: prefix+vn for vn in my_variable_names} + from pymbolic.interop.maxima import MaximaStringifyMapper - from pymbolic.maxima import MaximaStringifyMapper mstr = MaximaStringifyMapper() s2p = SympyToPymbolicMapper() dkill = _DerivativeKiller() - result = [] + result: list[str] = [] - def write_assignment(name): + def write_assignment(name: str) -> None: symbols = [atm for atm in assignments[name].atoms() - if isinstance(atm, sym.Symbol) - and atm.name in my_variable_names] + if isinstance(atm, Symbol) + and atm.name in variable_names] for symb in symbols: if symb.name not in written_assignments: @@ -222,12 +232,12 @@ def checked_cse(exprs, symbols=None): max_old = _get_assignments_in_maxima({ f"old_expr{i}": expr for i, expr in enumerate(exprs)}) - new_ass_dict = { + new_assign_dict = { f"new_expr{i}": expr for i, expr in enumerate(new_exprs)} for name, val in new_assignments: - new_ass_dict[name.name] = val - max_new = _get_assignments_in_maxima(new_ass_dict) + new_assign_dict[name.name] = val + max_new = _get_assignments_in_maxima(new_assign_dict) with open("check.mac", "w") as outf: outf.write("ratprint:false;\n") @@ -245,36 +255,17 @@ def checked_cse(exprs, symbols=None): # }}} -def sym_real_norm_2(x): - return sym.sqrt((x.T*x)[0, 0]) +def sym_real_norm_2(x: Matrix) -> Expr: + return sqrt((x.T*x)[0, 0]) -def pymbolic_real_norm_2(x): - from pymbolic import var - return var("sqrt")(np.dot(x, x)) +def pymbolic_real_norm_2( + x: ObjectArray1D[ArithmeticExpression]) -> ArithmeticExpression: + return prim.Variable("sqrt")(x @ x) def make_sym_vector(name: str, components: int) -> Matrix: - return sym.Matrix([sym.Symbol(f"{name}{i}") for i in range(components)]) - - -def vector_xreplace(expr, from_vec, to_vec): - substs = {} - assert (from_vec.rows, from_vec.cols) == (to_vec.rows, to_vec.cols) - for irow in range(from_vec.rows): - for icol in range(from_vec.cols): - substs[from_vec[irow, icol]] = to_vec[irow, icol] - - return expr.xreplace(substs) - - -def find_power_of(base, prod): - remdr = sym.Wild("remdr") - power = sym.Wild("power") - result = prod.match(remdr*base**power) - if result is None: - return 0 - return result[power] + return Matrix([Symbol(f"{name}{i}") for i in range(components)]) @prim.expr_dataclass() @@ -294,92 +285,103 @@ class SpatialConstant(prim.Variable): prefix: ClassVar[str] = "_spatial_constant_" """Prefix used in code generation for variables of this type.""" - def as_sympy(self) -> sp.Symbol: + def as_sympy(self) -> Symbol: """Convert variable to a :mod:`sympy` expression.""" - return sym.Symbol(f"{self.prefix}{self.name}") + return Symbol(f"{self.prefix}{self.name}") @classmethod - def from_sympy(cls, expr: sp.Symbol) -> SpatialConstant: + def from_sympy(cls, expr: Symbol) -> SpatialConstant: """Convert :mod:`sympy` expression to a constant.""" return cls(expr.name[len(cls.prefix):]) class PymbolicToSympyMapper(PymbolicToSympyMapperBase): - def map_spatial_constant(self, expr): + def map_spatial_constant(self, expr: SpatialConstant) -> Basic: return expr.as_sympy() class SympyToPymbolicMapper(SympyToPymbolicMapperBase): - def map_Symbol(self, expr): # noqa: N802 + @override + def map_Symbol(self, expr: Symbol) -> Expression: if expr.name.startswith(SpatialConstant.prefix): return SpatialConstant.from_sympy(expr) + return SympyToPymbolicMapperBase.map_Symbol(self, expr) - def map_Pow(self, expr): # noqa: N802 + @override + def map_Pow(self, expr: Pow) -> Expression: if expr.exp == -1: - return 1/self.rec(expr.base) + return 1 / self.rec_arith(expr.base) else: return SympyToPymbolicMapperBase.map_Pow(self, expr) - def map_Mul(self, expr): # noqa: N802 - num_args = [] - den_args = [] + @override + def map_Mul(self, expr: Mul) -> Expression: + num_args: list[ArithmeticExpression] = [] + den_args: list[ArithmeticExpression] = [] for child in expr.args: if (isinstance(child, Pow) and isinstance(child.exp, Integer) and child.exp < 0): - den_args.append(self.rec(child.base)**(-self.rec(child.exp))) + den_args.append(self.rec_arith(child.base)**(-self.rec_arith(child.exp))) else: - num_args.append(self.rec(child)) + num_args.append(self.rec_arith(child)) return math.prod(num_args) / math.prod(den_args) class PymbolicToSympyMapperWithSymbols(PymbolicToSympyMapper): - def map_variable(self, expr): + @override + def map_variable(self, expr: prim.Variable) -> Basic: if expr.name == "I": - return sym.I + return I elif expr.name == "pi": - return sym.pi + return pi else: return PymbolicToSympyMapper.map_variable(self, expr) - def map_subscript(self, expr): + @override + def map_subscript(self, expr: prim.Subscript) -> Basic: if isinstance(expr.aggregate, prim.Variable) and isinstance(expr.index, int): - return sym.Symbol(f"{expr.aggregate.name}{expr.index}") + return Symbol(f"{expr.aggregate.name}{expr.index}") else: self.raise_conversion_error(expr) + raise - def map_call(self, expr): - if expr.function.name == "hankel_1": - args = [self.rec(param) for param in expr.parameters] - args.append(0) - return Hankel1(*args) - elif expr.function.name == "bessel_j": - args = [self.rec(param) for param in expr.parameters] - args.append(0) - return BesselJ(*args) - else: - return PymbolicToSympyMapper.map_call(self, expr) + @override + def map_call(self, expr: prim.Call) -> Basic: + function = expr.function + if isinstance(function, prim.Variable): + if function.name == "hankel_1": + args = [self.rec(param) for param in expr.parameters] + args.append(sympify(0)) + return Hankel1(*args) + elif function.name == "bessel_j": + args = [self.rec(param) for param in expr.parameters] + args.append(sympify(0)) + return BesselJ(*args) + + return PymbolicToSympyMapper.map_call(self, expr) -import sympy +from sympy import Function as SympyFunction -class _BesselOrHankel(sympy.Function): +class _BesselOrHankel(SympyFunction): """A symbolic function for BesselJ or Hankel1 functions that keeps track of the derivatives taken of the function. Arguments are ``(order, z, nderivs)``. """ - nargs = (3,) + nargs: ClassVar[tuple[int, ...]] = (3,) - def fdiff(self, argindex=1): + @override + def fdiff(self, argindex: int = 1) -> Basic: if argindex in (1, 3): # we are not differentiating w.r.t order or nderivs raise ValueError(f"invalid argindex: {argindex}") order, z, nderivs = self.args - return self.func(order, z, nderivs+1) + return self.func(order, z, nderivs + 1) class BesselJ(_BesselOrHankel): @@ -395,9 +397,9 @@ class Hankel1(_BesselOrHankel): if not TYPE_CHECKING and USE_SYMENGINE: def BesselJ(*args): # noqa: N802 - return sym.sympify(_SympyBesselJ(*args)) + return sympify(_SympyBesselJ(*args)) def Hankel1(*args): # noqa: N802 - return sym.sympify(_SympyHankel1(*args)) + return sympify(_SympyHankel1(*args)) # vim: fdm=marker