Nuitka-winsvc 2.3.9__cp311-cp311-win_amd64.whl → 2.4.1__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Nuitka-winsvc might be problematic. Click here for more details.

Files changed (213) hide show
  1. Nuitka_winsvc-2.3.9.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.4.1.data/scripts/nuitka-run.cmd +1 -1
  2. {Nuitka_winsvc-2.3.9.dist-info → Nuitka_winsvc-2.4.1.dist-info}/METADATA +1 -1
  3. {Nuitka_winsvc-2.3.9.dist-info → Nuitka_winsvc-2.4.1.dist-info}/RECORD +213 -210
  4. {Nuitka_winsvc-2.3.9.dist-info → Nuitka_winsvc-2.4.1.dist-info}/WHEEL +1 -1
  5. nuitka/CacheCleanup.py +6 -1
  6. nuitka/HardImportRegistry.py +29 -2
  7. nuitka/MainControl.py +62 -35
  8. nuitka/ModuleRegistry.py +11 -3
  9. nuitka/OptionParsing.py +78 -39
  10. nuitka/Options.py +142 -35
  11. nuitka/OutputDirectories.py +5 -0
  12. nuitka/PostProcessing.py +23 -14
  13. nuitka/PythonFlavors.py +22 -4
  14. nuitka/PythonVersions.py +18 -0
  15. nuitka/Tracing.py +26 -23
  16. nuitka/TreeXML.py +6 -3
  17. nuitka/Version.py +1 -1
  18. nuitka/__main__.py +55 -10
  19. nuitka/build/Backend.scons +6 -1
  20. nuitka/build/CCompilerVersion.scons +1 -0
  21. nuitka/build/Onefile.scons +4 -0
  22. nuitka/build/SconsCaching.py +1 -0
  23. nuitka/build/SconsCompilerSettings.py +1 -0
  24. nuitka/build/SconsHacks.py +5 -1
  25. nuitka/build/SconsInterface.py +2 -0
  26. nuitka/build/SconsUtils.py +5 -2
  27. nuitka/build/include/nuitka/allocator.h +27 -5
  28. nuitka/build/include/nuitka/calling.h +1 -1
  29. nuitka/build/include/nuitka/compiled_frame.h +23 -23
  30. nuitka/build/include/nuitka/compiled_method.h +1 -1
  31. nuitka/build/include/nuitka/exception_groups.h +0 -2
  32. nuitka/build/include/nuitka/helper/attributes.h +7 -1
  33. nuitka/build/include/nuitka/helper/subscripts.h +1 -1
  34. nuitka/build/include/nuitka/helpers.h +7 -4
  35. nuitka/build/include/nuitka/prelude.h +6 -10
  36. nuitka/build/include/nuitka/printing.h +2 -0
  37. nuitka/build/include/nuitka/unfreezing.h +5 -5
  38. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  39. nuitka/build/static_src/CompiledAsyncgenType.c +2 -4
  40. nuitka/build/static_src/CompiledCellType.c +7 -7
  41. nuitka/build/static_src/CompiledCodeHelpers.c +51 -36
  42. nuitka/build/static_src/CompiledCoroutineType.c +2 -4
  43. nuitka/build/static_src/CompiledFrameType.c +109 -82
  44. nuitka/build/static_src/CompiledFunctionType.c +36 -9
  45. nuitka/build/static_src/CompiledGeneratorType.c +12 -10
  46. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +2 -2
  47. nuitka/build/static_src/CompiledMethodType.c +14 -13
  48. nuitka/build/static_src/HelpersAttributes.c +13 -15
  49. nuitka/build/static_src/HelpersBuiltin.c +18 -9
  50. nuitka/build/static_src/HelpersCalling.c +13 -13
  51. nuitka/build/static_src/HelpersCallingGenerated.c +22 -22
  52. nuitka/build/static_src/HelpersComparisonEq.c +110 -110
  53. nuitka/build/static_src/HelpersComparisonEqUtils.c +1 -1
  54. nuitka/build/static_src/HelpersComparisonGe.c +110 -110
  55. nuitka/build/static_src/HelpersComparisonGt.c +110 -110
  56. nuitka/build/static_src/HelpersComparisonLe.c +110 -110
  57. nuitka/build/static_src/HelpersComparisonLt.c +110 -110
  58. nuitka/build/static_src/HelpersComparisonNe.c +110 -110
  59. nuitka/build/static_src/HelpersConstantsBlob.c +480 -481
  60. nuitka/build/static_src/HelpersDictionaries.c +9 -0
  61. nuitka/build/static_src/HelpersFiles.c +2 -2
  62. nuitka/build/static_src/HelpersFilesystemPaths.c +28 -13
  63. nuitka/build/static_src/HelpersHeapStorage.c +4 -0
  64. nuitka/build/static_src/HelpersImport.c +1 -1
  65. nuitka/build/static_src/HelpersLists.c +5 -1
  66. nuitka/build/static_src/HelpersMatching.c +95 -35
  67. nuitka/build/static_src/HelpersOperationInplaceAdd.c +23 -23
  68. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +1 -0
  69. nuitka/build/static_src/HelpersOperationInplaceBitand.c +11 -11
  70. nuitka/build/static_src/HelpersOperationInplaceBitor.c +11 -11
  71. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +11 -11
  72. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +17 -17
  73. nuitka/build/static_src/HelpersOperationInplaceLshift.c +9 -9
  74. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +10 -10
  75. nuitka/build/static_src/HelpersOperationInplaceMod.c +47 -47
  76. nuitka/build/static_src/HelpersOperationInplaceMult.c +28 -28
  77. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +17 -17
  78. nuitka/build/static_src/HelpersOperationInplacePow.c +17 -17
  79. nuitka/build/static_src/HelpersOperationInplaceRshift.c +9 -9
  80. nuitka/build/static_src/HelpersOperationInplaceSub.c +17 -17
  81. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +17 -17
  82. nuitka/build/static_src/HelpersSequences.c +1 -1
  83. nuitka/build/static_src/HelpersTypes.c +8 -4
  84. nuitka/build/static_src/MainProgram.c +28 -9
  85. nuitka/build/static_src/MetaPathBasedLoader.c +126 -110
  86. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +13 -4
  87. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +30 -1
  88. nuitka/build/static_src/OnefileBootstrap.c +34 -6
  89. nuitka/code_generation/AttributeCodes.py +12 -10
  90. nuitka/code_generation/CodeGeneration.py +6 -7
  91. nuitka/code_generation/ConstantCodes.py +53 -10
  92. nuitka/code_generation/GlobalConstants.py +6 -6
  93. nuitka/code_generation/Indentation.py +3 -4
  94. nuitka/code_generation/LoaderCodes.py +3 -0
  95. nuitka/code_generation/LocalsDictCodes.py +36 -14
  96. nuitka/code_generation/MatchCodes.py +23 -4
  97. nuitka/code_generation/ModuleCodes.py +0 -7
  98. nuitka/code_generation/Namify.py +2 -0
  99. nuitka/code_generation/PackageResourceCodes.py +5 -1
  100. nuitka/code_generation/templates/CodeTemplatesConstants.py +6 -4
  101. nuitka/code_generation/templates/CodeTemplatesLoader.py +1 -1
  102. nuitka/code_generation/templates/CodeTemplatesModules.py +3 -3
  103. nuitka/code_generation/templates/CodeTemplatesVariables.py +16 -2
  104. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +2 -2
  105. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +1 -1
  106. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +1 -1
  107. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +7 -7
  108. nuitka/freezer/DependsExe.py +3 -1
  109. nuitka/freezer/DllDependenciesMacOS.py +28 -14
  110. nuitka/freezer/IncludedDataFiles.py +12 -3
  111. nuitka/freezer/IncludedEntryPoints.py +8 -2
  112. nuitka/freezer/Onefile.py +6 -1
  113. nuitka/freezer/Standalone.py +9 -2
  114. nuitka/importing/Importing.py +14 -5
  115. nuitka/importing/Recursion.py +3 -0
  116. nuitka/nodes/AttributeNodesGenerated.py +21 -12
  117. nuitka/nodes/BuiltinOpenNodes.py +5 -0
  118. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +11 -11
  119. nuitka/nodes/BuiltinRefNodes.py +41 -1
  120. nuitka/nodes/ChildrenHavingMixins.py +143 -355
  121. nuitka/nodes/ClassNodes.py +30 -12
  122. nuitka/nodes/CodeObjectSpecs.py +9 -0
  123. nuitka/nodes/ExpressionBasesGenerated.py +11 -11
  124. nuitka/nodes/FunctionNodes.py +11 -12
  125. nuitka/nodes/FutureSpecs.py +16 -3
  126. nuitka/nodes/GeneratorNodes.py +2 -2
  127. nuitka/nodes/HardImportNodesGenerated.py +11 -134
  128. nuitka/nodes/LocalsScopes.py +19 -23
  129. nuitka/nodes/MatchNodes.py +18 -7
  130. nuitka/nodes/ModuleAttributeNodes.py +1 -20
  131. nuitka/nodes/ModuleNodes.py +23 -6
  132. nuitka/nodes/NodeBases.py +13 -11
  133. nuitka/nodes/NodeMetaClasses.py +26 -10
  134. nuitka/nodes/ReturnNodes.py +1 -1
  135. nuitka/nodes/StatementBasesGenerated.py +11 -11
  136. nuitka/nodes/SubscriptNodes.py +4 -4
  137. nuitka/nodes/VariableAssignNodes.py +1 -1
  138. nuitka/nodes/VariableRefNodes.py +28 -2
  139. nuitka/nodes/shapes/BuiltinTypeShapes.py +21 -1
  140. nuitka/optimizations/FunctionInlining.py +3 -6
  141. nuitka/optimizations/Optimization.py +13 -12
  142. nuitka/optimizations/TraceCollections.py +19 -4
  143. nuitka/plugins/PluginBase.py +121 -133
  144. nuitka/plugins/Plugins.py +91 -3
  145. nuitka/plugins/YamlPluginBase.py +121 -0
  146. nuitka/plugins/standard/AntiBloatPlugin.py +87 -28
  147. nuitka/plugins/standard/DataFilesPlugin.py +15 -6
  148. nuitka/plugins/standard/DelvewheelPlugin.py +7 -3
  149. nuitka/plugins/standard/DllFilesPlugin.py +5 -3
  150. nuitka/plugins/standard/ImplicitImports.py +34 -20
  151. nuitka/plugins/standard/MatplotlibPlugin.py +3 -1
  152. nuitka/plugins/standard/MultiprocessingPlugin.py +2 -2
  153. nuitka/plugins/standard/OptionsNannyPlugin.py +1 -1
  154. nuitka/plugins/standard/PySidePyQtPlugin.py +11 -12
  155. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  156. nuitka/plugins/standard/standard.nuitka-package.config.yml +491 -186
  157. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +17 -0
  158. nuitka/reports/Reports.py +53 -5
  159. nuitka/specs/BuiltinParameterSpecs.py +1 -1
  160. nuitka/specs/HardImportSpecs.py +0 -6
  161. nuitka/tools/data_composer/DataComposer.py +29 -27
  162. nuitka/tools/environments/CreateEnvironment.py +1 -0
  163. nuitka/tools/environments/Virtualenv.py +25 -11
  164. nuitka/tools/general/find_module/FindModuleCode.py +13 -3
  165. nuitka/tools/onefile_compressor/OnefileCompressor.py +21 -4
  166. nuitka/tools/scanning/DisplayPackageDLLs.py +17 -3
  167. nuitka/tools/specialize/CTypeDescriptions.py +13 -7
  168. nuitka/tools/specialize/SpecializePython.py +18 -1
  169. nuitka/tools/testing/Common.py +19 -6
  170. nuitka/tools/testing/check_reference_counts/__main__.py +1 -1
  171. nuitka/tools/testing/run_nuitka_tests/__main__.py +0 -20
  172. nuitka/tools/watch/AutoStage.py +144 -0
  173. nuitka/tools/watch/__main__.py +79 -32
  174. nuitka/tree/Building.py +105 -104
  175. nuitka/tree/ComplexCallHelperFunctions.py +16 -26
  176. nuitka/tree/InternalModule.py +9 -1
  177. nuitka/tree/ReformulationAssignmentStatements.py +29 -59
  178. nuitka/tree/ReformulationClasses.py +10 -17
  179. nuitka/tree/ReformulationClasses3.py +69 -43
  180. nuitka/tree/ReformulationComparisonExpressions.py +6 -16
  181. nuitka/tree/ReformulationContractionExpressions.py +14 -23
  182. nuitka/tree/ReformulationDictionaryCreation.py +6 -10
  183. nuitka/tree/ReformulationExecStatements.py +10 -10
  184. nuitka/tree/ReformulationForLoopStatements.py +6 -12
  185. nuitka/tree/ReformulationFunctionStatements.py +22 -28
  186. nuitka/tree/ReformulationImportStatements.py +8 -10
  187. nuitka/tree/ReformulationLambdaExpressions.py +3 -6
  188. nuitka/tree/ReformulationMatchStatements.py +166 -60
  189. nuitka/tree/ReformulationMultidist.py +3 -1
  190. nuitka/tree/ReformulationNamespacePackages.py +1 -1
  191. nuitka/tree/ReformulationPrintStatements.py +3 -6
  192. nuitka/tree/ReformulationSequenceCreation.py +13 -26
  193. nuitka/tree/ReformulationTryFinallyStatements.py +15 -0
  194. nuitka/tree/ReformulationWithStatements.py +12 -16
  195. nuitka/tree/SourceHandling.py +13 -8
  196. nuitka/tree/VariableClosure.py +5 -21
  197. nuitka/utils/Distributions.py +80 -11
  198. nuitka/utils/Download.py +38 -31
  199. nuitka/utils/Execution.py +21 -9
  200. nuitka/utils/FileOperations.py +55 -28
  201. nuitka/utils/Images.py +6 -1
  202. nuitka/utils/Importing.py +1 -1
  203. nuitka/utils/ModuleNames.py +11 -5
  204. nuitka/utils/ReExecute.py +17 -13
  205. nuitka/utils/SharedLibraries.py +69 -41
  206. nuitka/utils/Signing.py +3 -1
  207. nuitka/utils/StaticLibraries.py +51 -41
  208. nuitka/utils/Timing.py +1 -1
  209. nuitka/utils/Utils.py +29 -7
  210. /Nuitka_winsvc-2.3.9.data/scripts/nuitka.bat → /Nuitka_winsvc-2.4.1.data/scripts/nuitka.cmd +0 -0
  211. {Nuitka_winsvc-2.3.9.dist-info → Nuitka_winsvc-2.4.1.dist-info}/LICENSE.txt +0 -0
  212. {Nuitka_winsvc-2.3.9.dist-info → Nuitka_winsvc-2.4.1.dist-info}/entry_points.txt +0 -0
  213. {Nuitka_winsvc-2.3.9.dist-info → Nuitka_winsvc-2.4.1.dist-info}/top_level.txt +0 -0
@@ -674,7 +674,7 @@ PyObject *BUILTIN_FORMAT(PyThreadState *tstate, PyObject *value, PyObject *forma
674
674
  }
675
675
 
676
676
  // Helper functions for print. Need to play nice with Python softspace
677
- // behaviour.
677
+ // behavior.
678
678
 
679
679
  #if PYTHON_VERSION >= 0x300
680
680
  NUITKA_DEFINE_BUILTIN(print);
@@ -860,6 +860,17 @@ bool PRINT_STRING(char const *str) {
860
860
  }
861
861
  }
862
862
 
863
+ bool PRINT_STRING_W(wchar_t const *str) {
864
+ if (str) {
865
+ PyObject *tmp = NuitkaUnicode_FromWideChar(str, -1);
866
+ bool res = PRINT_ITEM(tmp);
867
+ Py_DECREF(tmp);
868
+ return res;
869
+ } else {
870
+ return PRINT_STRING("<nullstr>");
871
+ }
872
+ }
873
+
863
874
  bool PRINT_FORMAT(char const *fmt, ...) {
864
875
  va_list args;
865
876
  va_start(args, fmt);
@@ -868,6 +879,8 @@ bool PRINT_FORMAT(char const *fmt, ...) {
868
879
  char buffer[4096];
869
880
 
870
881
  vsprintf(buffer, fmt, args);
882
+ va_end(args);
883
+
871
884
  return PRINT_STRING(buffer);
872
885
  }
873
886
 
@@ -1016,6 +1029,8 @@ bool PRINT_ITEM(PyObject *object) {
1016
1029
  }
1017
1030
  }
1018
1031
 
1032
+ bool PRINT_ITEM_LINE(PyObject *object) { return PRINT_ITEM(object) && PRINT_NEW_LINE(); }
1033
+
1019
1034
  #if PYTHON_VERSION < 0x300
1020
1035
 
1021
1036
  static void set_slot(PyObject **slot, PyObject *value) {
@@ -1025,26 +1040,26 @@ static void set_slot(PyObject **slot, PyObject *value) {
1025
1040
  Py_XDECREF(temp);
1026
1041
  }
1027
1042
 
1028
- static void set_attr_slots(PyClassObject *klass) {
1029
- set_slot(&klass->cl_getattr, FIND_ATTRIBUTE_IN_CLASS(klass, const_str_plain___getattr__));
1030
- set_slot(&klass->cl_setattr, FIND_ATTRIBUTE_IN_CLASS(klass, const_str_plain___setattr__));
1031
- set_slot(&klass->cl_delattr, FIND_ATTRIBUTE_IN_CLASS(klass, const_str_plain___delattr__));
1043
+ static void set_attr_slots(PyClassObject *class_object) {
1044
+ set_slot(&class_object->cl_getattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___getattr__));
1045
+ set_slot(&class_object->cl_setattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___setattr__));
1046
+ set_slot(&class_object->cl_delattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___delattr__));
1032
1047
  }
1033
1048
 
1034
- static bool set_dict(PyClassObject *klass, PyObject *value) {
1049
+ static bool set_dict(PyClassObject *class_object, PyObject *value) {
1035
1050
  if (value == NULL || !PyDict_Check(value)) {
1036
1051
  PyThreadState *tstate = PyThreadState_GET();
1037
1052
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "__dict__ must be a dictionary object");
1038
1053
  return false;
1039
1054
  } else {
1040
- set_slot(&klass->cl_dict, value);
1041
- set_attr_slots(klass);
1055
+ set_slot(&class_object->cl_dict, value);
1056
+ set_attr_slots(class_object);
1042
1057
 
1043
1058
  return true;
1044
1059
  }
1045
1060
  }
1046
1061
 
1047
- static bool set_bases(PyClassObject *klass, PyObject *value) {
1062
+ static bool set_bases(PyClassObject *class_object, PyObject *value) {
1048
1063
  if (value == NULL || !PyTuple_Check(value)) {
1049
1064
 
1050
1065
  PyThreadState *tstate = PyThreadState_GET();
@@ -1064,7 +1079,7 @@ static bool set_bases(PyClassObject *klass, PyObject *value) {
1064
1079
  return false;
1065
1080
  }
1066
1081
 
1067
- if (unlikely(PyClass_IsSubclass(base, (PyObject *)klass))) {
1082
+ if (unlikely(PyClass_IsSubclass(base, (PyObject *)class_object))) {
1068
1083
  PyThreadState *tstate = PyThreadState_GET();
1069
1084
 
1070
1085
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError,
@@ -1073,14 +1088,14 @@ static bool set_bases(PyClassObject *klass, PyObject *value) {
1073
1088
  }
1074
1089
  }
1075
1090
 
1076
- set_slot(&klass->cl_bases, value);
1077
- set_attr_slots(klass);
1091
+ set_slot(&class_object->cl_bases, value);
1092
+ set_attr_slots(class_object);
1078
1093
 
1079
1094
  return true;
1080
1095
  }
1081
1096
  }
1082
1097
 
1083
- static bool set_name(PyClassObject *klass, PyObject *value) {
1098
+ static bool set_name(PyClassObject *class_object, PyObject *value) {
1084
1099
  if (value == NULL || !PyDict_Check(value)) {
1085
1100
  PyThreadState *tstate = PyThreadState_GET();
1086
1101
 
@@ -1095,11 +1110,11 @@ static bool set_name(PyClassObject *klass, PyObject *value) {
1095
1110
  return false;
1096
1111
  }
1097
1112
 
1098
- set_slot(&klass->cl_name, value);
1113
+ set_slot(&class_object->cl_name, value);
1099
1114
  return true;
1100
1115
  }
1101
1116
 
1102
- static int nuitka_class_setattr(PyClassObject *klass, PyObject *attr_name, PyObject *value) {
1117
+ static int nuitka_class_setattr(PyClassObject *class_object, PyObject *attr_name, PyObject *value) {
1103
1118
  char const *sattr_name = PyString_AsString(attr_name);
1104
1119
 
1105
1120
  if (sattr_name[0] == '_' && sattr_name[1] == '_') {
@@ -1107,72 +1122,72 @@ static int nuitka_class_setattr(PyClassObject *klass, PyObject *attr_name, PyObj
1107
1122
 
1108
1123
  if (sattr_name[n - 2] == '_' && sattr_name[n - 1] == '_') {
1109
1124
  if (strcmp(sattr_name, "__dict__") == 0) {
1110
- if (set_dict(klass, value) == false) {
1125
+ if (set_dict(class_object, value) == false) {
1111
1126
  return -1;
1112
1127
  } else {
1113
1128
  return 0;
1114
1129
  }
1115
1130
  } else if (strcmp(sattr_name, "__bases__") == 0) {
1116
- if (set_bases(klass, value) == false) {
1131
+ if (set_bases(class_object, value) == false) {
1117
1132
  return -1;
1118
1133
  } else {
1119
1134
  return 0;
1120
1135
  }
1121
1136
  } else if (strcmp(sattr_name, "__name__") == 0) {
1122
- if (set_name(klass, value) == false) {
1137
+ if (set_name(class_object, value) == false) {
1123
1138
  return -1;
1124
1139
  } else {
1125
1140
  return 0;
1126
1141
  }
1127
1142
  } else if (strcmp(sattr_name, "__getattr__") == 0) {
1128
- set_slot(&klass->cl_getattr, value);
1143
+ set_slot(&class_object->cl_getattr, value);
1129
1144
  } else if (strcmp(sattr_name, "__setattr__") == 0) {
1130
- set_slot(&klass->cl_setattr, value);
1145
+ set_slot(&class_object->cl_setattr, value);
1131
1146
  } else if (strcmp(sattr_name, "__delattr__") == 0) {
1132
- set_slot(&klass->cl_delattr, value);
1147
+ set_slot(&class_object->cl_delattr, value);
1133
1148
  }
1134
1149
  }
1135
1150
  }
1136
1151
 
1137
1152
  if (value == NULL) {
1138
- int status = DICT_REMOVE_ITEM(klass->cl_dict, attr_name);
1153
+ int status = DICT_REMOVE_ITEM(class_object->cl_dict, attr_name);
1139
1154
 
1140
1155
  if (status < 0) {
1141
- PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(klass->cl_name),
1142
- sattr_name);
1156
+ PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'",
1157
+ PyString_AS_STRING(class_object->cl_name), sattr_name);
1143
1158
  }
1144
1159
 
1145
1160
  return status;
1146
1161
  } else {
1147
- return DICT_SET_ITEM(klass->cl_dict, attr_name, value) ? 0 : -1;
1162
+ return DICT_SET_ITEM(class_object->cl_dict, attr_name, value) ? 0 : -1;
1148
1163
  }
1149
1164
  }
1150
1165
 
1151
- static PyObject *nuitka_class_getattr(PyClassObject *klass, PyObject *attr_name) {
1166
+ static PyObject *nuitka_class_getattr(PyClassObject *class_object, PyObject *attr_name) {
1152
1167
  char const *sattr_name = PyString_AsString(attr_name);
1153
1168
 
1154
1169
  if (sattr_name[0] == '_' && sattr_name[1] == '_') {
1155
1170
  if (strcmp(sattr_name, "__dict__") == 0) {
1156
- Py_INCREF(klass->cl_dict);
1157
- return klass->cl_dict;
1171
+ Py_INCREF(class_object->cl_dict);
1172
+ return class_object->cl_dict;
1158
1173
  } else if (strcmp(sattr_name, "__bases__") == 0) {
1159
- Py_INCREF(klass->cl_bases);
1160
- return klass->cl_bases;
1174
+ Py_INCREF(class_object->cl_bases);
1175
+ return class_object->cl_bases;
1161
1176
  } else if (strcmp(sattr_name, "__name__") == 0) {
1162
- if (klass->cl_name == NULL) {
1177
+ if (class_object->cl_name == NULL) {
1163
1178
  Py_INCREF_IMMORTAL(Py_None);
1164
1179
  return Py_None;
1165
1180
  } else {
1166
- Py_INCREF(klass->cl_name);
1167
- return klass->cl_name;
1181
+ Py_INCREF(class_object->cl_name);
1182
+ return class_object->cl_name;
1168
1183
  }
1169
1184
  }
1170
1185
  }
1171
1186
 
1172
- PyObject *value = FIND_ATTRIBUTE_IN_CLASS(klass, attr_name);
1187
+ PyObject *value = FIND_ATTRIBUTE_IN_CLASS(class_object, attr_name);
1173
1188
 
1174
1189
  if (unlikely(value == NULL)) {
1175
- PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(klass->cl_name),
1190
+ PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(class_object->cl_name),
1176
1191
  sattr_name);
1177
1192
  return NULL;
1178
1193
  }
@@ -1185,7 +1200,7 @@ static PyObject *nuitka_class_getattr(PyClassObject *klass, PyObject *attr_name)
1185
1200
  Py_INCREF(value);
1186
1201
  return value;
1187
1202
  } else {
1188
- return tp_descr_get(value, (PyObject *)NULL, (PyObject *)klass);
1203
+ return tp_descr_get(value, (PyObject *)NULL, (PyObject *)class_object);
1189
1204
  }
1190
1205
  }
1191
1206
 
@@ -466,8 +466,6 @@ static PySendResult _Nuitka_Coroutine_sendR(PyThreadState *tstate, struct Nuitka
466
466
 
467
467
  Nuitka_MarkCoroutineAsNotRunning(coroutine);
468
468
 
469
- tstate = PyThreadState_GET();
470
-
471
469
  // Remove the back frame from coroutine if it's there.
472
470
  if (coroutine->m_frame) {
473
471
  // assert(tstate->frame == &coroutine->m_frame->m_frame);
@@ -1155,7 +1153,7 @@ static PyMethodDef Nuitka_Coroutine_methods[] = {{"send", (PyCFunction)Nuitka_Co
1155
1153
 
1156
1154
  // TODO: Set "__doc__" automatically for method clones of compiled types from
1157
1155
  // the documentation of built-in original type.
1158
- static PyGetSetDef Nuitka_Coroutine_getsetlist[] = {
1156
+ static PyGetSetDef Nuitka_Coroutine_tp_getset[] = {
1159
1157
  {(char *)"__name__", (getter)Nuitka_Coroutine_get_name, (setter)Nuitka_Coroutine_set_name, NULL},
1160
1158
  {(char *)"__qualname__", (getter)Nuitka_Coroutine_get_qualname, (setter)Nuitka_Coroutine_set_qualname, NULL},
1161
1159
  {(char *)"cr_await", (getter)Nuitka_Coroutine_get_cr_await, (setter)NULL, NULL},
@@ -1212,7 +1210,7 @@ PyTypeObject Nuitka_Coroutine_Type = {
1212
1210
  0, // tp_iternext
1213
1211
  Nuitka_Coroutine_methods, // tp_methods
1214
1212
  Nuitka_Coroutine_members, // tp_members
1215
- Nuitka_Coroutine_getsetlist, // tp_getset
1213
+ Nuitka_Coroutine_tp_getset, // tp_getset
1216
1214
  0, // tp_base
1217
1215
  0, // tp_dict
1218
1216
  0, // tp_descr_get