NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3148 most downloaded on PyPI
Pure Python COM package
Last release 13 days ago
21 Sep 2026
Ships fairly regularly
a new release about every 2 months
Most releases are documented
notes for 36 of 51 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
51 releases · first in 2014
Unify Windows message handling APIs in messageloop.py . By @junkmd .
messageloop.py. By @junkmd.test_eventinterface.py. By @junkmd.GetEvents with currently unsupported COM servers. By @junkmd.test_basic.py to use public APIs. By @junkmd.util on Python 3.15 alpha/beta. By @junkmd.IGlobalInterfaceTable with type hints. By @junkmd.UnboundLocalError when all struct packings fail in calc_packing. By @ryanda9910.One column per quarter.
Add a deprecation decorator to logutil.setup_logging . By @junkmd .
IStorage tests and enhance coverage. By @junkmd.COMObjects raise errors. By @junkmd.shelllink.py for ITEMIDLIST structure. By @junkmd.logutil.NTDebugHandler. By @junkmd.logutil.setup_logging. By @junkmd.IGlobalInterfaceTable marshaling. By @junkmd.CreateTypeLib and ICreateTypeInfo tests. By @junkmd.VARIANTEnumerator. By @junkmd.IViewObject.Draw. By @junkmd.ITypeComp.Bind. By @junkmd.client testing. By @junkmd.Fix TYPE_E_ELEMENTNOTFOUND HRESULT constant value. By @junkmd .
TYPE_E_ELEMENTNOTFOUND HRESULT constant value. By @junkmd.ITypeInfo testing in test_typeinfo.py. By @junkmd.test_QueryService.py and test_casesensitivity.py. By @junkmd.test_ie.py to test_eventinterface.py. By @junkmd.SyntaxError in DispMethodAnnotator signature generation. By @junkmd.test_msi.py to test_puredispatch.py. By @junkmd.test_wmi.py to test_variant_outparam.py. By @junkmd.@skip decorators on the test methods in test_eventinterface.py. By @junkmd.stdole.IPicture creation through IStream. By @junkmd.test_client.py. By @junkmd.test_outparam. By @junkmd.test_stream. By @junkmd.test_storage. By @junkmd.malloc module. By @junkmd.client.GetClassObject, CoGetClassObject and IClassFactory. By @junkmd.ITypeInfo.AddressOfMember with tests and clarifications. By @junkmd.ITypeComp.Bind tests and type hints. By @junkmd.Replace setup.py with pyproject.toml . By @moi15moi .
Remove Python 3.8 and add Python 3.14 to the CI pipelines. By @junkmd .
Add support for coverage. By @moi15moi .
Test_Stat to test_stream. By @junkmd.RegisterActiveObject. By @junkmd.object inheritance from every class. By @moi15moi.super() calls by removing explicit class and instance arguments. By @moi15moi.b"" instead of str.encode("utf-8"). By @moi15moi.codecov.yml. By @moi15moi.OSError. By @moi15moi.test_variant. By @junkmd.test_eval in INPROC server tests due to instability. By @junkmd.viewobject.py. By @junkmd.test_viewobject. By @junkmd.test_npsupport passes with numpy>=2.0.0 by explicitly setting dtype=numpy.int32. By @junkmd.DictPropertyBag and type hints for IPropertyBag. By @junkmd.numpy interoperability and enable datetime64 tests. By @junkmd.VARIANTs when setting values. By @junkmd.messageloop. By @junkmd.util and add comprehensive tests. By @junkmd.util with explicit imports and typing. By @junkmd.npsupport by removing the patch for the np._typecodes. By @junkmd.Improve PARAMFLAG_... and DISPATCH_... constants definitions and imports. By @junkmd .
PARAMFLAG_... and DISPATCH_... constants definitions and imports. By @junkmd._CDataType alias from typeshed. By @junkmd.260 literals/constant definitions with imports from ctypes.wintypes.MAX_PATH. By @junkmd.client._code_cache._get_module_filename with typeinfo.GetModuleFileName. By @junkmd.client._code_cache.SHGetSpecialFolderPath definition. By @junkmd.SupportErrorInfoTest to test_comserver. By @junkmd.test_errorinfo. By @junkmd.errorinfo.ReportException. By @junkmd._...MemberSpec from unpacking to dot access. By @junkmd.server.connectionpoints.ConnectionPointImpl._call_sinks. By @junkmd.create_vtbl_mapping, create_dispimpl and _encode_idl. By @junkmd.test_hresult. By @junkmd.Test_Vtbl to test_comobject.py. By @junkmd.IUnknown_AddRef and IUnknown_Release. By @junkmd.assertRaises usage to context manager for improved readability. By @junkmd.PATH variable from client/_generate.py. By @moi15moi.Replace deprecated install command in CI pipelines. By @moi15moi .
GetModuleFileNameA with GetModuleFileNameW to prevent a TypeError. By @junkmd.server.register. By @junkmd.PythonClass and PythonPath are no longer registered in the registry for a frozen server. By @junkmd.WinDLL/OleDLL instead of windll/oledll. By @moi15moi.tools.tlbparser, replace windll.oleaut32.QueryPathOfRegTypeLib with typeinfo.QueryPathOfRegTypeLib. By @moi15moi.QueryPathOfRegTypeLib docstring. By @moi15moi.tools subpackage. By @junkmd.ActiveObjTest to test_comserver. By @junkmd._shutdown. By @moi15moi.preview.bat. By @moi15moi.ruff lint rules from pyproject.toml. By @moi15moi.client/__init__.py into modules. By @junkmd.find_memleak. By @junkmd.extend-select = ["I"] to [tool.ruff.lint]. By @junkmd.Separate patch processing within _com_interface_meta into a module. By @junkmd .
_com_interface_meta into a module. By @junkmd.Literal and Protocol with runtime-referable symbols. By @junkmd.% string formatting to f-strings in many modules. By @newwingbird.% string formatting to f-strings in _post_coinit.unknwn. By @junkmd.comtypes.shelllink. By @cosmastech.instancemethod. By @junkmd._midlSAFEARRAY(HRESULT) type. By @davidschranz.server/w_getopt.py into production code and test code. By @junkmd.GUID symbol. By @junkmd.ctypes.wintypes imports. By @fmtabler.pywin32 related tests. By @junkmd.server.register.Registrar and refactor it. By @junkmd.Test_Registrar_.... By @junkmd.vtbl creation within _comobject into a module. By @junkmd.Remove Python 3.7 and add Python 3.13 to the CI pipelines. By @junkmd.
shelllink. By @junkmd.test_stream. By @junkmd.void_type definition to tlbparser. By @junkmd.tools.tlbparser.get_tlib_filename. By @junkmd.Parser.parse_typeinfo. By @junkmd.tlbparser. By @junkmd.codegenerator.namespaces. By @junkmd.CoGetClassObject and GetClassObject. By @junkmd.__new__ methods of _cominterface_meta and _coclass_meta. By @junkmd.__cmp__ methods. By @newwingbird.from __future__ import print_function lines. By @newwingbird.itf to be an unbound variable in _cominterface_meta.__get_baseinterface_methodcount. By @newwingbird.Improve _CArrayType alias import. By @junkmd .
_CArrayType alias import. By @junkmd._byref_type and _carg_obj to _CArgObject. By @junkmd.README.md. By @umarbutler.BSTR definition. By @junkmd.tagDEC definition. By @junkmd.typeinfo. By @junkmd.test_istream to test_stream. By @junkmd.test_msvidctl. By @junkmd.test_storage. By @junkmd.test_monikers. By @junkmd.test_shelllink. By @junkmd.test_persist. By @junkmd.persist. By @junkmd.shelllink. By @junkmd.python_requires to >=3.8 in setup.cfg. By @junkmd.Add tests and method annotations for IRecordInfo. By @junkmd.
IRecordInfo. By @junkmd.automation. By @junkmd.Any and Tuple from the hints stub instead of directly importing them in generated modules. By @junkmd.GUID.py. By @junkmd.codegenerator.modulenamer static typing. By @junkmd.TYPE_CHECKING blocks. By @junkmd.ParseInterface and ParseDispatch. By @junkmd.Split __init__.py into some modules. By @junkmd.
__init__.py into some modules. By @junkmd._DispMemberSpec in automation. By @junkmd._encode_idl in _comobject. By @junkmd.SAFEARRAY pointers and SAFEARRAYs as method parameters of a Dispatch Interface. By @geppi.extra parameter in the create method of tagSAFEARRAY subtypes. By @geppi.ISequentialStream. By @jonschz.test_wmi. By @junkmd._midlSAFEARRAY. By @junkmd.Stop mentioning the last version supporting Windows CE in README.md. By @forderud.
README.md. By @forderud.Refactor test_findgendir. By @junkmd.
test_findgendir. By @junkmd.test_GUID. By @junkmd.typeannotator that interprets the return value. By @junkmd._IUnknown_Base and IUnknown. By @junkmd.groupby_impltypeflags. By @junkmd.CoClass is assigned as the return value type. By @junkmd.EnumerationNamespaces and CodeGenerator.enum_aliases. By @junkmd.typedesc. By @junkmd.codegenerator into some modules in the sub-package directory. By @junkmd.npsupport to CI pipeline matrix. By @junkmd.README.md. By @junkmd.Improve the stability of module generation by GetModule. By @junkmd.
GetModule. By @junkmd.c_int aliases earlier than others in wrapper modules. By @junkmd.codegenerator and typeannotator. By @junkmd.Incomplete and Hresult to hints.pyi. By @junkmd.Fix TypeError when defining enumeration types. By @junkmd
TypeError when defining enumeration types. By @junkmdThis is the first major version supporting enumerations in friendly modules.
This is the first major version supporting enumerations in friendly modules.
index.rst about the enumeration types. By @junkmd.Add type annotations to dynamically generated modules. By @junkmd.
README.md. By @junkmd.This is the first major version supporting Python 3 only.
This is the first major version supporting Python 3 only.
black==22.12.0 formatter. By @junkmd.client.dynamic. By @junkmd.client.dynamic. By @junkmd.test_client. By @junkmd.test_getactiveobj. By @junkmd.sys.version_info bridges from production codebase. By @junkmd.for_stub=True conditional branch from the tools.codegenerator.ImportedNamespaces.getvalue. By @junkmd.codegenerator as generating __next__() instead of next() in IEnum.... By @jonschz.IEnum... interfaces. By @jonschz.'Programming Language :: Python :: 2.7' from setup.py. By @junkmd._ComMemberSpec and _DispMemberSpec to typing.NamedTuple. By @junkmd.typeinfo. By @junkmd.DISPPARAMS instantiation in IDispatch.Invoke method. By @junkmd.clear_comtypes_cache to be a callable comtypes.clear_cache module. By @bennyrowland.__wrapper_module__. By @junkmd.call_with_inout within _fix_inout_args. By @jonschz.CONTRIBUTING.md. By @junkmd.README.md. By @junkmd.Replace distutils with setuptools. By @junkmd.
distutils with setuptools. By @junkmd.hints.pyi to package_data in setup.py which copies hints.pyi to correct install location. By @junkmd.This is the last major version supporting Python 2.7. Next major one 1.3.0 will be Python3 only.
This is the last major version supporting Python 2.7. Next major one 1.3.0 will be Python3 only.
numpy, and make numpy interop opt-in. By @bennyrowland.__all__ part in codegenerator.Generator.generate_code. By @junkmd.GetModule from tools.codegenerator. By @junkmd.io.StringIO used for code generation. By @junkmd.Array from _ctypes to ctypes. By @junkmd.for_stub mode to ImportedNamespaces.getvalue. By @junkmd.monkeypatch_COMError. By @junkmd.CodeGenerator.need_GUID. By @junkmd.CodeGenerator.type_name method to TypeNamer class. By @junkmd.__known_symbols__ attributes. By @junkmd.CodeGenerator.type_name calls no longer needed and rename to _to_type_name. By @junkmd._fix_inout_args to module-level top level function. By @junkmd.DispInterfaceHead. By @junkmd....METHOD and ...PROPERTY return _MemberSpecs instead of tuples. By @junkmd....property DRY. By @junkmd._MemberSpec stuffs and separate modules. By @junkmd.make_...Method and make_...Property of codegenerator. By @junkmd.typeinfo.IRecordInfo._methods_. By @j0ker70.setup.py. By @jaraco.CONTRIBUTING.md. By @junkmd.README.md style. By @junkmd.master branch to main and dropping Python2 to README.md. By @junkmd.Fix SyntaxError in generated docstring. Thanks @junkmd.
SyntaxError in generated docstring. Thanks @junkmd.Many fixes in code generator. Thanks @junkmd.
GetModule and fix type lib timestamping for incomplete generated module. Thanks @junkmd.Constants into a separate module. Thanks @junkmd.client.GetModule can take a one liner containing lib UUID. Thanks @junkmd.Generator.imports instead of Generator._externals. Thanks @junkmd.typedesc.Obj.name in tools.codegenerator. Thanks @junkmd.client.Constants. Thanks @junkmd.Fix setuptools>=57.5.0 compatibility. Thanks @kdschlosser.
Fix loading module from relative path on Windows 7.
Fix loading module from relative path.
Fix #161: "No module named 'comtypes.gen.stdole'". Thanks @fxthomas.
Fix command pip install comtypes --no-cache-dir --target="C:\tmp" (issue #158).
pip install comtypes --no-cache-dir --target="C:\tmp" (issue #158).Fix pip install comtypes error: "option --single-version-externally-managed not recognized" (issue #155).
pip install comtypes error: "option --single-version-externally-managed
not recognized" (issue #155).See CHANGES.txt for a list of changes since release 1.1.4.
See CHANGES.txt for a list of changes since release 1.1.4.
clear_comtypes_cache.py and add it to post-install step.CreateObject for restricted user (#124).Fix TypeError when gen folder is unwriteable and it is a namespace package (#102). Thanks to @orf for the bug report. Thanks to @jornb for the initial
See CHANGES.txt for a list of changes since release 1.1.2.
See CHANGES.txt for a list of changes since release 1.1.2.
See CHANGES.txt for a list of changes since release 1.1.0.
See CHANGES.txt for a list of changes since release 1.1.0.
See CHANGES.txt for a list of changes since release 1.0.0.
See CHANGES.txt for a list of changes since release 1.0.0.
safearray_as_ndarray context (#41).patcher module (#31).Officially dropped support for Python 2.5.
partial module with a patcher module. This new
technique patches the underlying classes explicitly. This technique avoids
the problems with the metaclass magic on Python 3.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →