Skip to content

Error raising error in calc_packaging #937

@jbhopkins

Description

@jbhopkins

I'm trying to use comtypes to interface with a vendor provided COM interface. When I run it, I get the following error message:

(wyatt) PS C:\wyatt-control> python .\test_api.py
Traceback (most recent call last):
  File "C:\wyatt-control\test_api.py", line 11, in <module>
    astra_com = comtypes.client.CreateObject("WTC.Astra8.Application.1")
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\client\_create.py", line 122, in CreateObject
    return _manage(obj, clsid, interface=interface)
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\client\_managing.py", line 113, in _manage
    obj = GetBestInterface(obj)
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\client\_managing.py", line 87, in GetBestInterface
    mod = GetModule(tlib)
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\client\_generate.py", line 127, in GetModule
    return ModuleGenerator(tlib, pathname).generate()
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\client\_generate.py", line 232, in generate
    wrp_code = codegen.generate_wrapper_code(items, filename=self.pathname)
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\tools\codegenerator\codegenerator.py", line 202, in generate_wrapper_code
    self.generate_all(items)
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\tools\codegenerator\codegenerator.py", line 110, in generate_all
    self.generate(item)
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\tools\codegenerator\codegenerator.py", line 106, in generate
    mth(item)
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\tools\codegenerator\codegenerator.py", line 370, in Structure
    self.generate(struct.get_body())
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\tools\codegenerator\codegenerator.py", line 106, in generate
    mth(item)
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\tools\codegenerator\codegenerator.py", line 396, in StructureBody
    pack = packing.calc_packing(body.struct, fields)
  File "C:\Users\biocat\miniconda3\envs\wyatt\lib\site-packages\comtypes\tools\codegenerator\packing.py", line 58, in calc_packing
    raise PackingError(f"PACKING FAILED: {details}")
UnboundLocalError: local variable 'details' referenced before assignment

Looking at the calc_packing code, the error arises because details is being used to catch the error, and in python 3 such variables are deleted after the except block finishes. I think it could be fixed by changing the except as:

        except PackingError as e:
            details = e
            continue

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingquestionFurther information is requested

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions