Nuitka-winsvc 1.6.6__cp310-cp310-win_amd64.whl → 1.7.5__cp310-cp310-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.
Files changed (84) hide show
  1. {Nuitka_winsvc-1.6.6.dist-info → Nuitka_winsvc-1.7.5.dist-info}/METADATA +1 -1
  2. {Nuitka_winsvc-1.6.6.dist-info → Nuitka_winsvc-1.7.5.dist-info}/RECORD +84 -81
  3. nuitka/Builtins.py +7 -1
  4. nuitka/MainControl.py +4 -0
  5. nuitka/OptionParsing.py +5 -3
  6. nuitka/Options.py +17 -2
  7. nuitka/Serialization.py +28 -5
  8. nuitka/Version.py +2 -2
  9. nuitka/build/Backend.scons +16 -3
  10. nuitka/build/CCompilerVersion.scons +1 -1
  11. nuitka/build/DataComposerInterface.py +15 -9
  12. nuitka/build/Onefile.scons +1 -1
  13. nuitka/build/SconsCompilerSettings.py +1 -0
  14. nuitka/build/SconsProgress.py +11 -2
  15. nuitka/build/SconsSpawn.py +15 -15
  16. nuitka/build/include/nuitka/builtins.h +2 -0
  17. nuitka/build/include/nuitka/filesystem_paths.h +4 -0
  18. nuitka/build/include/nuitka/helper/attributes.h +3 -0
  19. nuitka/build/include/nuitka/helper/import_hard.h +6 -0
  20. nuitka/build/include/nuitka/helpers.h +1 -1
  21. nuitka/build/include/nuitka/safe_string_ops.h +10 -3
  22. nuitka/build/static_src/CompiledCodeHelpers.c +0 -200
  23. nuitka/build/static_src/HelpersAttributes.c +185 -8
  24. nuitka/build/static_src/HelpersFilesystemPaths.c +528 -7
  25. nuitka/build/static_src/HelpersImportHard.c +38 -0
  26. nuitka/build/static_src/HelpersSafeStrings.c +6 -278
  27. nuitka/build/static_src/MainProgram.c +273 -73
  28. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +6 -0
  29. nuitka/build/static_src/OnefileBootstrap.c +19 -36
  30. nuitka/build/static_src/OnefileSplashScreen.cpp +1 -0
  31. nuitka/code_generation/AttributeCodes.py +42 -23
  32. nuitka/code_generation/CodeGeneration.py +4 -0
  33. nuitka/code_generation/FunctionCodes.py +18 -3
  34. nuitka/code_generation/GlobalConstants.py +8 -1
  35. nuitka/code_generation/PackageResourceCodes.py +40 -0
  36. nuitka/code_generation/templates/CodeTemplatesModules.py +1 -7
  37. nuitka/freezer/DllDependenciesMacOS.py +18 -1
  38. nuitka/freezer/IncludedDataFiles.py +6 -10
  39. nuitka/importing/ImportResolving.py +6 -0
  40. nuitka/importing/Recursion.py +24 -68
  41. nuitka/nodes/AttributeNodes.py +72 -19
  42. nuitka/nodes/ChildrenHavingMixins.py +203 -234
  43. nuitka/nodes/ExpressionBasesGenerated.py +136 -0
  44. nuitka/nodes/HardImportNodesGenerated.py +94 -0
  45. nuitka/nodes/ImportHardNodes.py +3 -3
  46. nuitka/nodes/ImportNodes.py +14 -4
  47. nuitka/nodes/ModuleNodes.py +4 -2
  48. nuitka/nodes/PackageMetadataNodes.py +12 -10
  49. nuitka/nodes/PackageResourceNodes.py +115 -0
  50. nuitka/nodes/TypeNodes.py +5 -1
  51. nuitka/plugins/PluginBase.py +32 -8
  52. nuitka/plugins/Plugins.py +44 -7
  53. nuitka/plugins/standard/AntiBloatPlugin.py +166 -72
  54. nuitka/plugins/standard/DataFilesPlugin.py +10 -0
  55. nuitka/plugins/standard/DllFilesPlugin.py +1 -2
  56. nuitka/plugins/standard/MatplotlibPlugin.py +24 -22
  57. nuitka/plugins/standard/MultiprocessingPlugin.py +5 -12
  58. nuitka/plugins/standard/OptionsNannyPlugin.py +2 -2
  59. nuitka/plugins/standard/PySidePyQtPlugin.py +18 -6
  60. nuitka/plugins/standard/PywebViewPlugin.py +4 -2
  61. nuitka/plugins/standard/TkinterPlugin.py +3 -0
  62. nuitka/plugins/standard/TransformersPlugin.py +11 -1
  63. nuitka/plugins/standard/TrioPlugin.py +6 -66
  64. nuitka/plugins/standard/standard.nuitka-package.config.yml +367 -21
  65. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +16 -4
  66. nuitka/specs/HardImportSpecs.py +6 -0
  67. nuitka/tools/data_composer/DataComposer.py +25 -27
  68. nuitka/tools/general/find_module/FindModuleCode.py +5 -2
  69. nuitka/tools/podman/Podman.py +53 -0
  70. nuitka/tools/podman/__init__.py +18 -0
  71. nuitka/tools/podman/__main__.py +255 -0
  72. nuitka/tools/specialize/SpecializePython.py +37 -3
  73. nuitka/tools/testing/RuntimeTracing.py +4 -0
  74. nuitka/tree/Building.py +1 -1
  75. nuitka/tree/ReformulationFunctionStatements.py +137 -10
  76. nuitka/utils/Execution.py +11 -1
  77. nuitka/utils/ModuleNames.py +1 -1
  78. nuitka/utils/SharedLibraries.py +7 -7
  79. {Nuitka_winsvc-1.6.6.data → Nuitka_winsvc-1.7.5.data}/scripts/nuitka-run.bat +0 -0
  80. {Nuitka_winsvc-1.6.6.data → Nuitka_winsvc-1.7.5.data}/scripts/nuitka.bat +0 -0
  81. {Nuitka_winsvc-1.6.6.dist-info → Nuitka_winsvc-1.7.5.dist-info}/LICENSE.txt +0 -0
  82. {Nuitka_winsvc-1.6.6.dist-info → Nuitka_winsvc-1.7.5.dist-info}/WHEEL +0 -0
  83. {Nuitka_winsvc-1.6.6.dist-info → Nuitka_winsvc-1.7.5.dist-info}/entry_points.txt +0 -0
  84. {Nuitka_winsvc-1.6.6.dist-info → Nuitka_winsvc-1.7.5.dist-info}/top_level.txt +0 -0
@@ -242,7 +242,7 @@ PyObject *LOOKUP_ATTRIBUTE(PyObject *source, PyObject *attr_name) {
242
242
  return NULL;
243
243
  }
244
244
  #if PYTHON_VERSION < 0x300
245
- else if (type->tp_getattro == PyInstance_Type.tp_getattro) {
245
+ else if (type->tp_getattro == PyInstance_Type.tp_getattro && Nuitka_String_CheckExact(attr_name)) {
246
246
  PyObject *result = LOOKUP_INSTANCE(source, attr_name);
247
247
  return result;
248
248
  }
@@ -535,13 +535,10 @@ int BUILTIN_HASATTR_BOOL(PyObject *source, PyObject *attr_name) {
535
535
  PyObject *value = PyObject_GetAttr(source, attr_name);
536
536
 
537
537
  if (value == NULL) {
538
- bool had_attribute_error = CHECK_AND_CLEAR_ATTRIBUTE_ERROR_OCCURRED();
539
-
540
- if (had_attribute_error) {
541
- return 0;
542
- } else {
538
+ if (CHECK_AND_CLEAR_ATTRIBUTE_ERROR_OCCURRED() == false) {
543
539
  return -1;
544
540
  }
541
+ return 0;
545
542
  }
546
543
 
547
544
  Py_DECREF(value);
@@ -589,6 +586,7 @@ bool HAS_ATTR_BOOL(PyObject *source, PyObject *attr_name) {
589
586
  }
590
587
 
591
588
  DROP_ERROR_OCCURRED();
589
+ return false;
592
590
  }
593
591
  }
594
592
  }
@@ -622,6 +620,7 @@ bool HAS_ATTR_BOOL(PyObject *source, PyObject *attr_name) {
622
620
  Py_INCREF(dict);
623
621
 
624
622
  PyObject *result = DICT_GET_ITEM1(dict, attr_name);
623
+ DROP_ERROR_OCCURRED();
625
624
 
626
625
  Py_DECREF(dict);
627
626
 
@@ -646,7 +645,10 @@ bool HAS_ATTR_BOOL(PyObject *source, PyObject *attr_name) {
646
645
  return true;
647
646
  }
648
647
 
649
- DROP_ERROR_OCCURRED();
648
+ if (CHECK_AND_CLEAR_ATTRIBUTE_ERROR_OCCURRED() == false) {
649
+ return -1;
650
+ }
651
+ return 0;
650
652
  }
651
653
 
652
654
  if (descr != NULL) {
@@ -659,7 +661,7 @@ bool HAS_ATTR_BOOL(PyObject *source, PyObject *attr_name) {
659
661
  return false;
660
662
  }
661
663
  #if PYTHON_VERSION < 0x300
662
- else if (type->tp_getattro == PyInstance_Type.tp_getattro) {
664
+ else if (type->tp_getattro == PyInstance_Type.tp_getattro && Nuitka_String_CheckExact(attr_name)) {
663
665
  PyObject *result = LOOKUP_INSTANCE(source, attr_name);
664
666
 
665
667
  if (result == NULL) {
@@ -704,6 +706,181 @@ bool HAS_ATTR_BOOL(PyObject *source, PyObject *attr_name) {
704
706
  #endif
705
707
  }
706
708
 
709
+ int HAS_ATTR_BOOL2(PyObject *source, PyObject *attr_name) {
710
+ CHECK_OBJECT(source);
711
+ CHECK_OBJECT(attr_name);
712
+
713
+ #if _NUITKA_EXPERIMENTAL_DISABLE_ATTR_OPT
714
+ PyObject *result = PyObject_GetAttr(source, attr_name);
715
+
716
+ if (result == NULL) {
717
+ return -1;
718
+ }
719
+
720
+ return CHECK_IF_TRUE(result) = 1 : 0;
721
+ #else
722
+ PyTypeObject *type = Py_TYPE(source);
723
+
724
+ if (hasTypeGenericGetAttr(type)) {
725
+ // Unfortunately this is required, although of cause rarely necessary.
726
+ if (unlikely(type->tp_dict == NULL)) {
727
+ if (unlikely(PyType_Ready(type) < 0)) {
728
+ return -1;
729
+ }
730
+ }
731
+
732
+ PyObject *descr = Nuitka_TypeLookup(type, attr_name);
733
+ descrgetfunc func = NULL;
734
+
735
+ if (descr != NULL) {
736
+ // Hold a refcount, Nuitka_TypeLookup does not give any.
737
+ Py_INCREF(descr);
738
+
739
+ if (NuitkaType_HasFeatureClass(Py_TYPE(descr))) {
740
+ func = Py_TYPE(descr)->tp_descr_get;
741
+
742
+ if (func != NULL && PyDescr_IsData(descr)) {
743
+ PyObject *result = func(descr, source, (PyObject *)type);
744
+ Py_DECREF(descr);
745
+
746
+ if (result) {
747
+ CHECK_OBJECT(result);
748
+
749
+ Py_DECREF(result);
750
+ return 1;
751
+ }
752
+
753
+ DROP_ERROR_OCCURRED();
754
+ return 0;
755
+ }
756
+ }
757
+ }
758
+
759
+ Py_ssize_t dict_offset = type->tp_dictoffset;
760
+ PyObject *dict = NULL;
761
+
762
+ if (dict_offset != 0) {
763
+ // Negative dictionary offsets have special meaning.
764
+ if (dict_offset < 0) {
765
+ Py_ssize_t tsize;
766
+ size_t size;
767
+
768
+ tsize = ((PyVarObject *)source)->ob_size;
769
+ if (tsize < 0) {
770
+ tsize = -tsize;
771
+ }
772
+ size = _PyObject_VAR_SIZE(type, tsize);
773
+
774
+ dict_offset += (long)size;
775
+ }
776
+
777
+ PyObject **dict_pointer = (PyObject **)((char *)source + dict_offset);
778
+ dict = *dict_pointer;
779
+ }
780
+
781
+ if (dict != NULL) {
782
+ CHECK_OBJECT(dict);
783
+
784
+ // TODO: If this is an exact dict, we don't have to hold a reference, is it?
785
+ Py_INCREF(dict);
786
+
787
+ PyObject *result = DICT_GET_ITEM1(dict, attr_name);
788
+
789
+ if (CHECK_AND_CLEAR_ATTRIBUTE_ERROR_OCCURRED() == false) {
790
+ return -1;
791
+ }
792
+
793
+ DROP_ERROR_OCCURRED();
794
+
795
+ Py_DECREF(dict);
796
+
797
+ if (result != NULL) {
798
+ Py_XDECREF(descr);
799
+
800
+ CHECK_OBJECT(result);
801
+
802
+ Py_DECREF(result);
803
+ return 1;
804
+ }
805
+ }
806
+
807
+ if (func != NULL) {
808
+ PyObject *result = func(descr, source, (PyObject *)type);
809
+ Py_DECREF(descr);
810
+
811
+ if (result != NULL) {
812
+ CHECK_OBJECT(result);
813
+
814
+ Py_DECREF(result);
815
+ return 1;
816
+ }
817
+
818
+ if (CHECK_AND_CLEAR_ATTRIBUTE_ERROR_OCCURRED() == false) {
819
+ return -1;
820
+ }
821
+ return 0;
822
+ }
823
+
824
+ if (descr != NULL) {
825
+ CHECK_OBJECT(descr);
826
+
827
+ Py_DECREF(descr);
828
+ return 1;
829
+ }
830
+
831
+ return 0;
832
+ }
833
+ #if PYTHON_VERSION < 0x300
834
+ else if (type->tp_getattro == PyInstance_Type.tp_getattro && Nuitka_String_CheckExact(attr_name)) {
835
+ PyObject *result = LOOKUP_INSTANCE(source, attr_name);
836
+
837
+ if (result == NULL) {
838
+ DROP_ERROR_OCCURRED();
839
+
840
+ return -1;
841
+ }
842
+
843
+ CHECK_OBJECT(result);
844
+
845
+ Py_DECREF(result);
846
+ return true;
847
+ }
848
+ #endif
849
+ else if (type->tp_getattro != NULL) {
850
+ PyObject *result = (*type->tp_getattro)(source, attr_name);
851
+
852
+ if (result == NULL) {
853
+ if (CHECK_AND_CLEAR_ATTRIBUTE_ERROR_OCCURRED() == false) {
854
+ return -1;
855
+ }
856
+
857
+ return 0;
858
+ }
859
+
860
+ CHECK_OBJECT(result);
861
+ Py_DECREF(result);
862
+ return true;
863
+ } else if (type->tp_getattr != NULL) {
864
+ PyObject *result = (*type->tp_getattr)(source, (char *)Nuitka_String_AsString_Unchecked(attr_name));
865
+
866
+ if (result == NULL) {
867
+ if (CHECK_AND_CLEAR_ATTRIBUTE_ERROR_OCCURRED() == false) {
868
+ return -1;
869
+ }
870
+
871
+ return 0;
872
+ }
873
+
874
+ CHECK_OBJECT(result);
875
+ Py_DECREF(result);
876
+
877
+ return 1;
878
+ } else {
879
+ return 0;
880
+ }
881
+ #endif
882
+ }
883
+
707
884
  #if PYTHON_VERSION < 0x300
708
885
  extern PyObject *CALL_FUNCTION_WITH_ARGS3(PyObject *called, PyObject *const *args);
709
886