enthought / comtypes

A pure Python, lightweight COM client and server framework, based on the ctypes Python FFI package.
Other
290 stars 96 forks source link

Separate function and interface definitions from `__init__.py` to `_base.py` #566

Closed junkmd closed 3 months ago

junkmd commented 3 months ago

I move the interfaces and functions defined in __init__.py that are defined after post-CoInitialize to _base.py.

The reason is same as #559,

The __init__.py of this package is very large. I think this is a barrier for newcomers to the community trying to understand this package.

Considering that the responsibility of __init__.py is to "handle the initialization of the package", calling CoInitializeEx is indeed initialization, so it is necessary in __init__.py.

However, for example, if we define things like the BSTR in other private modules and import it into __init__.py (such as current GUID module), __init__.py will become lightweight.

They contains basic functions for comtypes, and fundamental stuffs for COM which are also described in the documentation published by MS.

_base.py will be a temporary storage for now, and may be further subdivided in the future. But for the time being, they will be moved to this private module.

The following will be done in the same way as #559.

In order to keep the change history even if we squash & merge, I will divide it into several PRs.