aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristián Maureira-Fredes <Cristian.Maureira-Fredes@qt.io>2024-02-26 08:26:18 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-02-26 14:08:49 +0000
commit3082853a0214bf4782e30bc740f1694d5a012542 (patch)
tree04fbfa5d4f1ba1981343dfa147ca491bde173cbd
parent6d0c25cbf9f0ce2241f56b3c5a22269db80c60f7 (diff)
pyi: support class attributes
Pick-to: 6.5 6.2 Fixes: PYSIDE-2263 Change-Id: Ie5e8625d1f711b77c0e14b10a2d1b530dff1b660 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> (cherry picked from commit 8b5b0458efdbaa933c6513cd666d62962beb0edb) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py15
-rw-r--r--sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py6
2 files changed, 21 insertions, 0 deletions
diff --git a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py
index d07beb881..8c9b0eeba 100644
--- a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py
+++ b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py
@@ -125,6 +125,7 @@ class ExactEnumerator(object):
enums = []
properties = []
signals = []
+ attributes = {}
for thing_name, thing in class_members:
if signal_check(thing):
@@ -147,6 +148,13 @@ class ExactEnumerator(object):
enums.append((thing_name, type(thing).__qualname__, thing))
elif isinstance(thing, property):
properties.append((thing_name, thing))
+ # Support attributes that have PySide types as values,
+ # but we skip the 'staticMetaObject' that needs
+ # to be defined at a QObject level.
+ elif "PySide" in str(type(thing)) and "QMetaObject" not in str(type(thing)):
+ if class_name not in attributes:
+ attributes[class_name] = {}
+ attributes[class_name][thing_name] = thing
if thing_name in self.collision_candidates:
self.collision_track.add(thing_name)
@@ -183,6 +191,13 @@ class ExactEnumerator(object):
sig_str = str(signal)
with self.fmt.signal(sig_class_name, signal_name, sig_str):
pass
+ if hasattr(self.fmt, "attribute"):
+ if len(attributes):
+ self.section()
+ for class_name, attrs in attributes.items():
+ for attr_name, attr_value in attrs.items():
+ with self.fmt.attribute(attr_name, attr_value):
+ pass
if len(subclasses):
self.section()
for subclass_name, subclass in subclasses:
diff --git a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py
index c44346687..29e773d7a 100644
--- a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py
+++ b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py
@@ -157,6 +157,12 @@ class Formatter(Writer):
yield
@contextmanager
+ def attribute(self, attr_name, attr_value):
+ spaces = indent * self.level
+ self.print(f"{spaces}{attr_name:25}: ... # type: {type(attr_value).__qualname__}")
+ yield
+
+ @contextmanager
def signal(self, class_name, sig_name, sig_str):
spaces = indent * self.level
self.print(f"{spaces}{sig_name:25}: ClassVar[{class_name}] = ... # {sig_str}")