Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt for Python
  4. shiboken6-genpyi with C++ class mapped to primitive type (dict)
Forum Updated to NodeBB v4.3 + New Features

shiboken6-genpyi with C++ class mapped to primitive type (dict)

Scheduled Pinned Locked Moved Solved Qt for Python
3 Posts 2 Posters 288 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    giacomos
    wrote on last edited by
    #1

    Running shiboken6-genpyi against a Shiboken generated module wrapping a C++ library fails as follows:

    [giacomo@taeyang site-packages]$ shiboken6-genpyi PyCumbia.so 
    shibokensupport/signature/parser.py:271: RuntimeWarning: pyside_type_init:_resolve_value
    
            UNRECOGNIZED:   'CuData'
            OFFENDING LINE: 'PyCumbia.CuActivity(self,token:CuData)'
            
    shibokensupport/signature/parser.py:271: RuntimeWarning: pyside_type_init:_resolve_value
    
            UNRECOGNIZED:   'CuData'
            OFFENDING LINE: 'PyCumbia.CuActivity.getToken(self)->CuData'
            
    shibokensupport/signature/parser.py:271: RuntimeWarning: pyside_type_init:_resolve_value
    
            UNRECOGNIZED:   'CuData'
            OFFENDING LINE: 'PyCumbia.CuActivity.matches(self,token:CuData)->bool'
            
    shibokensupport/signature/parser.py:271: RuntimeWarning: pyside_type_init:_resolve_value
    
            UNRECOGNIZED:   'CuData'
            OFFENDING LINE: 'PyCumbia.CuActivity.publishProgress(self,step:int,total:int,data:CuData)'
            
    shibokensupport/signature/parser.py:271: RuntimeWarning: pyside_type_init:_resolve_value
    
            UNRECOGNIZED:   'CuData'
            OFFENDING LINE: '2:PyCumbia.CuActivity.publishResult(self,data:CuData)'
            
    shibokensupport/signature/parser.py:271: RuntimeWarning: pyside_type_init:_resolve_value
    
            UNRECOGNIZED:   'CuData'
            OFFENDING LINE: '0:PyCumbia.CuActivity.publishResult(self,datalist:std.vector[CuData])'
            
    shibokensupport/signature/parser.py:386: RuntimeWarning: pyside_type_init:_resolve_type
    
                    UNRECOGNIZED:   'typing.List[CuData]'
                    OFFENDING LINE: '0:PyCumbia.CuActivity.publishResult(self,datalist:std.vector[CuData])'
    
    Traceback (most recent call last):
      File "shibokensupport/signature/loader.py", line 40, in create_signature
      File "shibokensupport/signature/layout.py", line 394, in create_signature
      File "shibokensupport/signature/layout.py", line 287, in create_signature_union
      File "shibokensupport/signature/layout.py", line 212, in sort_by_inheritance
      File "shibokensupport/signature/layout.py", line 194, in get_ordering_key
    AttributeError: 'str' object has no attribute 'mro'
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
        import shiboken6;from shibokensupport.signature.lib.pyi_generator import main;main()
                                                                                      ~~~~^^
      File "shibokensupport/signature/lib/pyi_generator.py", line 395, in main
      File "shibokensupport/signature/lib/pyi_generator.py", line 318, in generate_pyi
      File "shibokensupport/signature/lib/enum_sig.py", line 119, in module
      File "shibokensupport/signature/lib/enum_sig.py", line 216, in klass
      File "shibokensupport/signature/lib/enum_sig.py", line 216, in <genexpr>
    SystemError: <built-in function get_signature> returned a result with an exception set
    
    

    CuData has been mapped into a Python dict

    <primitive-type name="CuData" target-lang-api-name="PyDict">
        <include file-name="cudata.h" location="global"/>
        <conversion-rule>
        <native-to-target file="glue/cumbia.cpp" snippet="return-cudata"/>
        <target-to-native>
        <add-conversion type="PyDict" check="PyDict_CheckExact(%in)" file="glue/cumbia.cpp" snippet="cudata-conversion-pydict"/>
        </target-to-native>
        </conversion-rule>
    </primitive-type>
    

    I don't know how to deal with this so that genpyi understands that CuData is python dict.

    Thanks for any suggestion

    1 Reply Last reply
    0
    • G Offline
      G Offline
      giacomos
      wrote on last edited by
      #2

      OK. it seems that I found the modify-argument "pyi-type" is working.
      With regards

      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #3

        Hi,

        Glad you found out and thanks for sharing !

        Would you mind posting the fixed version ? That might be useful to someone in the future.

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • CristianMaureiraC CristianMaureira has marked this topic as solved on

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved