diff options
| author | Christian Tismer <tismer@stackless.com> | 2024-10-27 18:17:11 +0100 |
|---|---|---|
| committer | Christian Tismer <tismer@stackless.com> | 2024-11-01 13:40:14 +0000 |
| commit | 07ee31548a3af6552e62625860c20772503e658c (patch) | |
| tree | 9c247657936f2735834c4f3f2ad06f5beae2ebe0 /sources/pyside6/tests | |
| parent | cc1164d29878ab74dbbd94718eee1bc2acdddbf6 (diff) | |
setup: fix PySide6.__all__ after the wheel split, amendment 3
The __all__ support for the PySide6 module works just fine.
But there is a last incompatibility that might strike others
as it did hit ourselves when using PySide6.__dict["__all__"]:
Use a derived dict type and define a __missing__ attribute.
Derive further a module type, then it works without problems.
A little support function in Shiboken allows to replace the
dict of PySide6 with this derived type.
amends 703d975f16aff95bc9014a2689a3ae824b5a552f.
Pick-to: 6.8
Task-number: PYSIDE-2895
Task-number: PYSIDE-1890
Change-Id: I018228116a5fdd1401c1ebd42ceb886f6829deeb
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside6/tests')
| -rw-r--r-- | sources/pyside6/tests/pysidetest/all_modules_load_test.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/sources/pyside6/tests/pysidetest/all_modules_load_test.py b/sources/pyside6/tests/pysidetest/all_modules_load_test.py index 16f2369a7..6b3ebe732 100644 --- a/sources/pyside6/tests/pysidetest/all_modules_load_test.py +++ b/sources/pyside6/tests/pysidetest/all_modules_load_test.py @@ -13,18 +13,26 @@ init_test_paths(False) import PySide6 + # Note: # "from PySide6 import *" can only be used at module level. # It is also really not recommended to use. But for testing, # the "__all__" variable is a great feature! - - class AllModulesImportTest(unittest.TestCase): def testAllModulesCanImport(self): # would also work: exec("from PySide6 import *") for name in PySide6.__all__: exec(f"import PySide6.{name}") + def testAllReappearsAfterDel(self): + # This is the only incompatibility that remains: + # After __all__ is deleted, it will re-appear. + PySide6.__all__ = 42 + self.assertEqual(PySide6.__dict__["__all__"], 42) + del PySide6.__all__ + self.assertTrue(PySide6.__dict__["__all__"]) + self.assertNotEqual(PySide6.__dict__["__all__"], 42) + if __name__ == '__main__': unittest.main() |
