comtypes 1.4.11__zip → 1.4.12__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {comtypes-1.4.11 → comtypes-1.4.12}/CHANGES.txt +26 -0
- {comtypes-1.4.11/comtypes.egg-info → comtypes-1.4.12}/PKG-INFO +2 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/README.md +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/__init__.py +8 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_comobject.py +6 -6
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_memberspec.py +7 -7
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_npsupport.py +12 -17
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_post_coinit/_cominterface_meta_patcher.py +5 -5
- comtypes-1.4.12/comtypes/_post_coinit/activeobj.py +61 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_post_coinit/misc.py +1 -23
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_post_coinit/unknwn.py +4 -6
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_vtbl.py +3 -3
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/automation.py +10 -13
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/client/__init__.py +2 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/client/_activeobj.py +8 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/client/_code_cache.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/client/_constants.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/client/_events.py +6 -6
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/client/_generate.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/client/dynamic.py +3 -3
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/client/lazybind.py +3 -3
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/errorinfo.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/hresult.py +68 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/messageloop.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/patcher.py +2 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/persist.py +9 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/safearray.py +10 -10
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/server/__init__.py +5 -37
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/server/automation.py +2 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/server/connectionpoints.py +3 -3
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/server/inprocserver.py +2 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/server/localserver.py +3 -3
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/server/register.py +5 -5
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_agilent.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_client_dynamic.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_comserver.py +7 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_createwrappers.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_dispifc_records.py +0 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_dispifc_safearrays.py +0 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_dispinterface.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_excel.py +1 -3
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_getactiveobj.py +19 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_hresult.py +39 -0
- comtypes-1.4.12/comtypes/test/test_messageloop.py +117 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_midl_safearray_create.py +0 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_msscript.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_npsupport.py +22 -11
- comtypes-1.4.12/comtypes/test/test_persist.py +71 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_recordinfo.py +0 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_server.py +6 -6
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_storage.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_stream.py +22 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_urlhistory.py +1 -1
- comtypes-1.4.12/comtypes/test/test_util.py +227 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_variant.py +41 -24
- comtypes-1.4.12/comtypes/test/test_viewobject.py +78 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_word.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/codegenerator/codegenerator.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/codegenerator/comments.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/codegenerator/heads.py +5 -5
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/codegenerator/helpers.py +7 -7
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/codegenerator/namespaces.py +3 -3
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/codegenerator/typeannotator.py +2 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/tlbparser.py +1 -1
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/typedesc.py +14 -14
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/typedesc_base.py +19 -19
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/util.py +38 -6
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/viewobject.py +29 -5
- {comtypes-1.4.11 → comtypes-1.4.12/comtypes.egg-info}/PKG-INFO +2 -2
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes.egg-info/SOURCES.txt +4 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/pyproject.toml +12 -1
- comtypes-1.4.11/comtypes/test/test_persist.py +0 -38
- {comtypes-1.4.11 → comtypes-1.4.12}/LICENSE.txt +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/MANIFEST.in +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/GUID.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_meta.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_post_coinit/__init__.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_post_coinit/bstr.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_post_coinit/instancemethod.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_safearray.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/_tlib_version_checker.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/clear_cache.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/client/_create.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/client/_managing.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/connectionpoints.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/git.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/hints.pyi +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/logutil.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/server/w_getopt.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/shelllink.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/stream.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/TestComServer.idl +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/TestComServer.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/TestComServer.tlb +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/TestDispServer.idl +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/TestDispServer.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/TestDispServer.tlb +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/__init__.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/find_memleak.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/mylib.idl +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/mylib.tlb +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/mytypelib.idl +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/runtests.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/setup.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_BSTR.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_DISPPARAMS.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_GUID.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_QueryService.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_avmc.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_basic.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_casesensitivity.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_clear_cache.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_client.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_client_regenerate_modules.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_collections.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_comobject.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_dict.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_dyndispatch.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_errorinfo.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_findgendir.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_ie.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_ienum.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_imfattributes.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_inout_args.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_jscript.js +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_monikers.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_outparam.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_pump_events.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_safearray.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_sapi.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_server_register.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_shelllink.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_showevents.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_subinterface.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_typeannotator.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_typeinfo.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_w_getopt.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_win32com_interop.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/test_wmi.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/test/urlhist.tlb +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/__init__.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/codegenerator/__init__.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/codegenerator/modulenamer.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/tools/codegenerator/packing.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes/typeinfo.py +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes.egg-info/dependency_links.txt +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes.egg-info/entry_points.txt +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/comtypes.egg-info/top_level.txt +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/setup.cfg +0 -0
- {comtypes-1.4.11 → comtypes-1.4.12}/setup.py +0 -0
|
@@ -115,33 +115,52 @@ class VariantTestCase(unittest.TestCase):
|
|
|
115
115
|
self.assertEqual(result, values)
|
|
116
116
|
|
|
117
117
|
def test_pythonobjects(self):
|
|
118
|
-
|
|
119
|
-
objects = [None, 42, 3.14, True, False, "abc", "abc", 7]
|
|
120
|
-
else:
|
|
121
|
-
objects = [None, 42, 3.14, True, False, "abc", "abc", 7]
|
|
118
|
+
objects = [None, 42, 3.14, True, False, "abc", "abc", 7]
|
|
122
119
|
for x in objects:
|
|
123
|
-
|
|
124
|
-
|
|
120
|
+
with self.subTest(x=x):
|
|
121
|
+
v = VARIANT(x)
|
|
122
|
+
self.assertEqual(x, v.value)
|
|
125
123
|
|
|
126
124
|
def test_integers(self):
|
|
127
125
|
v = VARIANT()
|
|
128
126
|
|
|
129
|
-
int_type = int if sys.version_info >= (3, 0) else (int, long)
|
|
130
|
-
|
|
131
|
-
if hasattr(sys, "maxint"):
|
|
132
|
-
# this test doesn't work in Python 3000
|
|
133
|
-
v.value = sys.maxsize
|
|
134
|
-
self.assertEqual(v.value, sys.maxsize)
|
|
135
|
-
self.assertIsInstance(v.value, int_type)
|
|
136
|
-
|
|
137
|
-
v.value += 1
|
|
138
|
-
self.assertEqual(v.value, sys.maxsize + 1)
|
|
139
|
-
self.assertIsInstance(v.value, int_type)
|
|
140
|
-
|
|
141
127
|
v.value = 1
|
|
142
128
|
|
|
143
129
|
self.assertEqual(v.value, 1)
|
|
144
|
-
self.assertIsInstance(v.value,
|
|
130
|
+
self.assertIsInstance(v.value, int)
|
|
131
|
+
|
|
132
|
+
def test_vt_uix_range_boundaries(self):
|
|
133
|
+
MIN_VT_I4 = -(2**31)
|
|
134
|
+
MAX_VT_I4 = 2**31 - 1
|
|
135
|
+
MAX_VT_UI4 = 2**32 - 1
|
|
136
|
+
MIN_VT_I8 = -(2**63)
|
|
137
|
+
MAX_VT_I8 = 2**63 - 1
|
|
138
|
+
MAX_VT_UI8 = 2**64 - 1
|
|
139
|
+
for val, vt in [
|
|
140
|
+
(MIN_VT_I8, VT_I8),
|
|
141
|
+
(MIN_VT_I4 - 1, VT_I8),
|
|
142
|
+
(MIN_VT_I4, VT_I4),
|
|
143
|
+
(0, VT_I4),
|
|
144
|
+
(MAX_VT_I4, VT_I4),
|
|
145
|
+
(MAX_VT_I4 + 1, VT_UI4),
|
|
146
|
+
(MAX_VT_UI4, VT_UI4),
|
|
147
|
+
(MAX_VT_UI4 + 1, VT_I8),
|
|
148
|
+
(MAX_VT_I8, VT_I8),
|
|
149
|
+
(MAX_VT_I8 + 1, VT_UI8),
|
|
150
|
+
(MAX_VT_UI8, VT_UI8),
|
|
151
|
+
]:
|
|
152
|
+
with self.subTest(val=val, vt=vt):
|
|
153
|
+
v = VARIANT()
|
|
154
|
+
v.value = val
|
|
155
|
+
self.assertEqual(v.value, val)
|
|
156
|
+
self.assertEqual(v.vt, vt)
|
|
157
|
+
|
|
158
|
+
def test_out_of_vt_uix_range(self):
|
|
159
|
+
MIN_VT_I8 = -(2**63)
|
|
160
|
+
MAX_VT_UI8 = 2**64 - 1
|
|
161
|
+
for val in [MIN_VT_I8 - 1, MAX_VT_UI8 + 1]:
|
|
162
|
+
with self.subTest(val=val), self.assertRaises(TypeError):
|
|
163
|
+
VARIANT().value = val
|
|
145
164
|
|
|
146
165
|
def test_datetime(self):
|
|
147
166
|
now = datetime.datetime.now()
|
|
@@ -304,13 +323,11 @@ def check_perf(rep=20000):
|
|
|
304
323
|
by_var = byref(variable)
|
|
305
324
|
ptr_var = pointer(variable)
|
|
306
325
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
else:
|
|
310
|
-
import cPickle as pickle
|
|
326
|
+
import pickle
|
|
327
|
+
|
|
311
328
|
try:
|
|
312
329
|
previous = pickle.load(open("result.pickle", "rb"))
|
|
313
|
-
except
|
|
330
|
+
except OSError:
|
|
314
331
|
previous = {}
|
|
315
332
|
|
|
316
333
|
results = {}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import contextlib
|
|
2
|
+
import unittest
|
|
3
|
+
from ctypes.wintypes import POINT, RECT, SIZEL
|
|
4
|
+
|
|
5
|
+
import comtypes.client
|
|
6
|
+
from comtypes import IUnknown
|
|
7
|
+
from comtypes.viewobject import (
|
|
8
|
+
DVASPECT_CONTENT,
|
|
9
|
+
IAdviseSink,
|
|
10
|
+
IViewObject,
|
|
11
|
+
IViewObject2,
|
|
12
|
+
IViewObjectEx,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
with contextlib.redirect_stdout(None): # supress warnings
|
|
16
|
+
comtypes.client.GetModule("mshtml.tlb")
|
|
17
|
+
|
|
18
|
+
import comtypes.gen.MSHTML as mshtml
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def create_html_document() -> IUnknown:
|
|
22
|
+
return comtypes.client.CreateObject(mshtml.HTMLDocument)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Test_IViewObject(unittest.TestCase):
|
|
26
|
+
def test_Advise_GetAdvise(self):
|
|
27
|
+
vo = create_html_document().QueryInterface(IViewObject)
|
|
28
|
+
# Test that we can clear any existing advise connection.
|
|
29
|
+
vo.SetAdvise(DVASPECT_CONTENT, 0, None)
|
|
30
|
+
# Verify that no advise connection is present.
|
|
31
|
+
aspect, advf, sink = vo.GetAdvise()
|
|
32
|
+
self.assertIsInstance(aspect, int)
|
|
33
|
+
self.assertIsInstance(advf, int)
|
|
34
|
+
self.assertIsInstance(sink, IAdviseSink)
|
|
35
|
+
self.assertFalse(sink) # A NULL com pointer evaluates to False.
|
|
36
|
+
|
|
37
|
+
def test_Freeze_Unfreeze(self):
|
|
38
|
+
vo = create_html_document().QueryInterface(IViewObject)
|
|
39
|
+
cookie = vo.Freeze(DVASPECT_CONTENT, -1, None)
|
|
40
|
+
self.assertIsInstance(cookie, int)
|
|
41
|
+
vo.Unfreeze(cookie)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class Test_IViewObject2(unittest.TestCase):
|
|
45
|
+
def test_GetExtent(self):
|
|
46
|
+
vo = create_html_document().QueryInterface(IViewObject2)
|
|
47
|
+
size = vo.GetExtent(DVASPECT_CONTENT, -1, None)
|
|
48
|
+
self.assertTrue(size)
|
|
49
|
+
self.assertIsInstance(size, SIZEL)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class Test_IViewObjectEx(unittest.TestCase):
|
|
53
|
+
def test_GetRect(self):
|
|
54
|
+
vo = create_html_document().QueryInterface(IViewObjectEx)
|
|
55
|
+
rect = vo.GetRect(DVASPECT_CONTENT)
|
|
56
|
+
self.assertTrue(rect)
|
|
57
|
+
self.assertIsInstance(rect, RECT)
|
|
58
|
+
|
|
59
|
+
def test_GetViewStatus(self):
|
|
60
|
+
vo = create_html_document().QueryInterface(IViewObjectEx)
|
|
61
|
+
status = vo.GetViewStatus()
|
|
62
|
+
self.assertIsInstance(status, int)
|
|
63
|
+
|
|
64
|
+
def test_QueryHitPoint(self):
|
|
65
|
+
vo = create_html_document().QueryInterface(IViewObjectEx)
|
|
66
|
+
# It is assumed that the view is not transparent at the origin.
|
|
67
|
+
bounds = RECT(left=0, top=0, right=100, bottom=100)
|
|
68
|
+
loc = POINT(x=0, y=0)
|
|
69
|
+
hit = vo.QueryHitPoint(DVASPECT_CONTENT, bounds, loc, 0)
|
|
70
|
+
self.assertIsInstance(hit, int)
|
|
71
|
+
|
|
72
|
+
def test_QueryHitRect(self):
|
|
73
|
+
vo = create_html_document().QueryInterface(IViewObjectEx)
|
|
74
|
+
# It is assumed that the view is not transparent at the origin.
|
|
75
|
+
bounds = RECT(left=0, top=0, right=100, bottom=100)
|
|
76
|
+
loc = RECT(left=0, top=0, right=1, bottom=1)
|
|
77
|
+
hit = vo.QueryHitRect(DVASPECT_CONTENT, bounds, loc, 0)
|
|
78
|
+
self.assertIsInstance(hit, int)
|
|
@@ -13,7 +13,7 @@ def _to_docstring(orig: str, depth: int = 1) -> str:
|
|
|
13
13
|
return f'{indent}"""{repled}"""'
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
class StructureHeadWriter
|
|
16
|
+
class StructureHeadWriter:
|
|
17
17
|
def __init__(self, stream: io.StringIO) -> None:
|
|
18
18
|
self.stream = stream
|
|
19
19
|
|
|
@@ -67,7 +67,7 @@ class StructureHeadWriter(object):
|
|
|
67
67
|
print(" pass", file=self.stream)
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
class LibraryHeadWriter
|
|
70
|
+
class LibraryHeadWriter:
|
|
71
71
|
def __init__(self, stream: io.StringIO) -> None:
|
|
72
72
|
self.stream = stream
|
|
73
73
|
|
|
@@ -93,7 +93,7 @@ class LibraryHeadWriter(object):
|
|
|
93
93
|
)
|
|
94
94
|
|
|
95
95
|
|
|
96
|
-
class CoClassHeadWriter
|
|
96
|
+
class CoClassHeadWriter:
|
|
97
97
|
def __init__(self, stream: io.StringIO, filename: Optional[str]) -> None:
|
|
98
98
|
self.stream = stream
|
|
99
99
|
self.filename = filename
|
|
@@ -117,7 +117,7 @@ class CoClassHeadWriter(object):
|
|
|
117
117
|
)
|
|
118
118
|
|
|
119
119
|
|
|
120
|
-
class ComInterfaceHeadWriter
|
|
120
|
+
class ComInterfaceHeadWriter:
|
|
121
121
|
def __init__(self, stream: io.StringIO) -> None:
|
|
122
122
|
self.stream = stream
|
|
123
123
|
|
|
@@ -172,7 +172,7 @@ class ComInterfaceHeadWriter(object):
|
|
|
172
172
|
print(annotations, file=self.stream)
|
|
173
173
|
|
|
174
174
|
|
|
175
|
-
class DispInterfaceHeadWriter
|
|
175
|
+
class DispInterfaceHeadWriter:
|
|
176
176
|
def __init__(self, stream: io.StringIO) -> None:
|
|
177
177
|
self.stream = stream
|
|
178
178
|
|
|
@@ -6,7 +6,7 @@ from comtypes.tools import typedesc
|
|
|
6
6
|
from comtypes.tools.codegenerator.modulenamer import name_wrapper_module
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
class lcid
|
|
9
|
+
class lcid:
|
|
10
10
|
def __repr__(self):
|
|
11
11
|
return "_lcid"
|
|
12
12
|
|
|
@@ -14,7 +14,7 @@ class lcid(object):
|
|
|
14
14
|
lcid = lcid()
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class dispid
|
|
17
|
+
class dispid:
|
|
18
18
|
def __init__(self, memid):
|
|
19
19
|
self.memid = memid
|
|
20
20
|
|
|
@@ -22,7 +22,7 @@ class dispid(object):
|
|
|
22
22
|
return f"dispid({self.memid})"
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
class helpstring
|
|
25
|
+
class helpstring:
|
|
26
26
|
def __init__(self, text):
|
|
27
27
|
self.text = text
|
|
28
28
|
|
|
@@ -100,7 +100,7 @@ def _to_arg_definition(
|
|
|
100
100
|
return code
|
|
101
101
|
|
|
102
102
|
|
|
103
|
-
class ComMethodGenerator
|
|
103
|
+
class ComMethodGenerator:
|
|
104
104
|
def __init__(self, m: typedesc.ComMethod, isdual: bool) -> None:
|
|
105
105
|
self._m = m
|
|
106
106
|
self._isdual = isdual
|
|
@@ -208,7 +208,7 @@ class ComMethodGenerator(object):
|
|
|
208
208
|
yield (type_name, arg_name, idlflags, default)
|
|
209
209
|
|
|
210
210
|
|
|
211
|
-
class DispMethodGenerator
|
|
211
|
+
class DispMethodGenerator:
|
|
212
212
|
def __init__(self, m: typedesc.DispMethod) -> None:
|
|
213
213
|
self._m = m
|
|
214
214
|
self.data: List[str] = []
|
|
@@ -262,7 +262,7 @@ class DispMethodGenerator(object):
|
|
|
262
262
|
yield (type_name, arg_name, idlflags, default)
|
|
263
263
|
|
|
264
264
|
|
|
265
|
-
class DispPropertyGenerator
|
|
265
|
+
class DispPropertyGenerator:
|
|
266
266
|
def __init__(self, m: typedesc.DispProperty) -> None:
|
|
267
267
|
self._m = m
|
|
268
268
|
self._to_type_name = TypeNamer()
|
|
@@ -290,7 +290,7 @@ class DispPropertyGenerator(object):
|
|
|
290
290
|
return (idlflags, type_name, self._m.name)
|
|
291
291
|
|
|
292
292
|
|
|
293
|
-
class TypeNamer
|
|
293
|
+
class TypeNamer:
|
|
294
294
|
def __call__(self, t: Any) -> str:
|
|
295
295
|
# Return a string, containing an expression which can be used
|
|
296
296
|
# to refer to the type. Assumes the 'from ctypes import *'
|
|
@@ -15,7 +15,7 @@ from typing import (
|
|
|
15
15
|
from typing import Union as _UnionT
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
class ImportedNamespaces
|
|
18
|
+
class ImportedNamespaces:
|
|
19
19
|
def __init__(self) -> None:
|
|
20
20
|
self.data: Dict[str, Optional[str]] = {}
|
|
21
21
|
|
|
@@ -132,7 +132,7 @@ class ImportedNamespaces(object):
|
|
|
132
132
|
return "\n".join(lines)
|
|
133
133
|
|
|
134
134
|
|
|
135
|
-
class DeclaredNamespaces
|
|
135
|
+
class DeclaredNamespaces:
|
|
136
136
|
def __init__(self) -> None:
|
|
137
137
|
self.data: Dict[Tuple[str, str], Optional[str]] = {}
|
|
138
138
|
|
|
@@ -168,7 +168,7 @@ class DeclaredNamespaces(object):
|
|
|
168
168
|
return "\n".join(lines)
|
|
169
169
|
|
|
170
170
|
|
|
171
|
-
class EnumerationNamespaces
|
|
171
|
+
class EnumerationNamespaces:
|
|
172
172
|
def __init__(self) -> None:
|
|
173
173
|
self.data: Dict[str, List[Tuple[str, int]]] = {}
|
|
174
174
|
|
|
@@ -276,7 +276,7 @@ class ComMethodsAnnotator(_MethodsAnnotator[typedesc.ComMethod]):
|
|
|
276
276
|
return ComMethodAnnotator(m)
|
|
277
277
|
|
|
278
278
|
|
|
279
|
-
class ComInterfaceMembersAnnotator
|
|
279
|
+
class ComInterfaceMembersAnnotator:
|
|
280
280
|
def __init__(self, itf: typedesc.ComInterface):
|
|
281
281
|
self.itf = itf
|
|
282
282
|
|
|
@@ -316,7 +316,7 @@ class DispMethodsAnnotator(_MethodsAnnotator[typedesc.DispMethod]):
|
|
|
316
316
|
return DispMethodAnnotator(m)
|
|
317
317
|
|
|
318
318
|
|
|
319
|
-
class DispInterfaceMembersAnnotator
|
|
319
|
+
class DispInterfaceMembersAnnotator:
|
|
320
320
|
def __init__(self, itf: typedesc.DispInterface):
|
|
321
321
|
self.itf = itf
|
|
322
322
|
|
|
@@ -10,7 +10,7 @@ from comtypes.tools.typedesc_base import *
|
|
|
10
10
|
from comtypes.typeinfo import TLIBATTR, ITypeLib
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class TypeLib
|
|
13
|
+
class TypeLib:
|
|
14
14
|
def __init__(
|
|
15
15
|
self, name: str, guid: str, major: int, minor: int, doc: Optional[str] = None
|
|
16
16
|
) -> None:
|
|
@@ -24,7 +24,7 @@ class TypeLib(object):
|
|
|
24
24
|
return f"<TypeLib({self.name}: {self.guid}, {self.major}, {self.minor})>"
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
class Constant
|
|
27
|
+
class Constant:
|
|
28
28
|
def __init__(
|
|
29
29
|
self,
|
|
30
30
|
name: str,
|
|
@@ -38,7 +38,7 @@ class Constant(object):
|
|
|
38
38
|
self.doc = doc
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
class External
|
|
41
|
+
class External:
|
|
42
42
|
def __init__(
|
|
43
43
|
self,
|
|
44
44
|
tlib: ITypeLib,
|
|
@@ -61,13 +61,13 @@ class External(object):
|
|
|
61
61
|
return self
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
class SAFEARRAYType
|
|
64
|
+
class SAFEARRAYType:
|
|
65
65
|
def __init__(self, typ: Any) -> None:
|
|
66
66
|
self.typ = typ
|
|
67
67
|
self.align = self.size = ctypes.sizeof(ctypes.c_void_p) * 8
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
class ComMethod
|
|
70
|
+
class ComMethod:
|
|
71
71
|
# custom COM method, parsed from typelib
|
|
72
72
|
def __init__(
|
|
73
73
|
self,
|
|
@@ -92,7 +92,7 @@ class ComMethod(object):
|
|
|
92
92
|
self.arguments.append((typ, name, idlflags, default))
|
|
93
93
|
|
|
94
94
|
|
|
95
|
-
class DispMethod
|
|
95
|
+
class DispMethod:
|
|
96
96
|
# dispatchable COM method, parsed from typelib
|
|
97
97
|
def __init__(
|
|
98
98
|
self,
|
|
@@ -117,7 +117,7 @@ class DispMethod(object):
|
|
|
117
117
|
self.arguments.append((typ, name, idlflags, default))
|
|
118
118
|
|
|
119
119
|
|
|
120
|
-
class DispProperty
|
|
120
|
+
class DispProperty:
|
|
121
121
|
# dispatchable COM property, parsed from typelib
|
|
122
122
|
def __init__(
|
|
123
123
|
self, dispid: int, name: str, typ: Any, idlflags: List[str], doc: Optional[Any]
|
|
@@ -129,17 +129,17 @@ class DispProperty(object):
|
|
|
129
129
|
self.doc = doc
|
|
130
130
|
|
|
131
131
|
|
|
132
|
-
class DispInterfaceHead
|
|
132
|
+
class DispInterfaceHead:
|
|
133
133
|
def __init__(self, itf: "DispInterface") -> None:
|
|
134
134
|
self.itf = itf
|
|
135
135
|
|
|
136
136
|
|
|
137
|
-
class DispInterfaceBody
|
|
137
|
+
class DispInterfaceBody:
|
|
138
138
|
def __init__(self, itf: "DispInterface") -> None:
|
|
139
139
|
self.itf = itf
|
|
140
140
|
|
|
141
141
|
|
|
142
|
-
class DispInterface
|
|
142
|
+
class DispInterface:
|
|
143
143
|
def __init__(
|
|
144
144
|
self,
|
|
145
145
|
name: str,
|
|
@@ -167,17 +167,17 @@ class DispInterface(object):
|
|
|
167
167
|
return self.itf_head
|
|
168
168
|
|
|
169
169
|
|
|
170
|
-
class ComInterfaceHead
|
|
170
|
+
class ComInterfaceHead:
|
|
171
171
|
def __init__(self, itf: "ComInterface") -> None:
|
|
172
172
|
self.itf = itf
|
|
173
173
|
|
|
174
174
|
|
|
175
|
-
class ComInterfaceBody
|
|
175
|
+
class ComInterfaceBody:
|
|
176
176
|
def __init__(self, itf: "ComInterface") -> None:
|
|
177
177
|
self.itf = itf
|
|
178
178
|
|
|
179
179
|
|
|
180
|
-
class ComInterface
|
|
180
|
+
class ComInterface:
|
|
181
181
|
def __init__(
|
|
182
182
|
self,
|
|
183
183
|
name: str,
|
|
@@ -209,7 +209,7 @@ _ImplTypeFlags = int
|
|
|
209
209
|
_Interface = _UnionT[ComInterface, DispInterface]
|
|
210
210
|
|
|
211
211
|
|
|
212
|
-
class CoClass
|
|
212
|
+
class CoClass:
|
|
213
213
|
def __init__(
|
|
214
214
|
self,
|
|
215
215
|
name: str,
|
|
@@ -5,7 +5,7 @@ from typing import Union as _UnionT
|
|
|
5
5
|
import comtypes
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
class Argument
|
|
8
|
+
class Argument:
|
|
9
9
|
"a Parameter in the argument list of a callable (Function, Method, ...)"
|
|
10
10
|
|
|
11
11
|
def __init__(self, atype, name):
|
|
@@ -13,7 +13,7 @@ class Argument(object):
|
|
|
13
13
|
self.name = name
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
class _HasArgs
|
|
16
|
+
class _HasArgs:
|
|
17
17
|
def __init__(self):
|
|
18
18
|
self.arguments = []
|
|
19
19
|
|
|
@@ -37,7 +37,7 @@ class _HasArgs(object):
|
|
|
37
37
|
################
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
class Alias
|
|
40
|
+
class Alias:
|
|
41
41
|
# a C preprocessor alias, like #define A B
|
|
42
42
|
def __init__(self, name, alias, typ=None):
|
|
43
43
|
self.name = name
|
|
@@ -45,7 +45,7 @@ class Alias(object):
|
|
|
45
45
|
self.typ = typ
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
class Macro
|
|
48
|
+
class Macro:
|
|
49
49
|
# a C preprocessor definition with arguments
|
|
50
50
|
def __init__(self, name, args, body):
|
|
51
51
|
# all arguments are strings, args is the literal argument list
|
|
@@ -56,7 +56,7 @@ class Macro(object):
|
|
|
56
56
|
self.body = body
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
class File
|
|
59
|
+
class File:
|
|
60
60
|
def __init__(self, name):
|
|
61
61
|
self.name = name
|
|
62
62
|
|
|
@@ -107,7 +107,7 @@ class Method(_HasArgs):
|
|
|
107
107
|
self.returns = returns
|
|
108
108
|
|
|
109
109
|
|
|
110
|
-
class FundamentalType
|
|
110
|
+
class FundamentalType:
|
|
111
111
|
location = None
|
|
112
112
|
|
|
113
113
|
def __init__(self, name, size, align):
|
|
@@ -117,7 +117,7 @@ class FundamentalType(object):
|
|
|
117
117
|
self.align = int(align)
|
|
118
118
|
|
|
119
119
|
|
|
120
|
-
class PointerType
|
|
120
|
+
class PointerType:
|
|
121
121
|
location = None
|
|
122
122
|
|
|
123
123
|
def __init__(self, typ, size, align):
|
|
@@ -126,7 +126,7 @@ class PointerType(object):
|
|
|
126
126
|
self.align = int(align)
|
|
127
127
|
|
|
128
128
|
|
|
129
|
-
class Typedef
|
|
129
|
+
class Typedef:
|
|
130
130
|
location = None
|
|
131
131
|
|
|
132
132
|
def __init__(self, name, typ):
|
|
@@ -134,7 +134,7 @@ class Typedef(object):
|
|
|
134
134
|
self.typ = typ
|
|
135
135
|
|
|
136
136
|
|
|
137
|
-
class ArrayType
|
|
137
|
+
class ArrayType:
|
|
138
138
|
location = None
|
|
139
139
|
|
|
140
140
|
def __init__(self, typ: Any, min: int, max: int) -> None:
|
|
@@ -143,21 +143,21 @@ class ArrayType(object):
|
|
|
143
143
|
self.max = max
|
|
144
144
|
|
|
145
145
|
|
|
146
|
-
class StructureHead
|
|
146
|
+
class StructureHead:
|
|
147
147
|
location = None
|
|
148
148
|
|
|
149
149
|
def __init__(self, struct: "_Struct_Union_Base") -> None:
|
|
150
150
|
self.struct = struct
|
|
151
151
|
|
|
152
152
|
|
|
153
|
-
class StructureBody
|
|
153
|
+
class StructureBody:
|
|
154
154
|
location = None
|
|
155
155
|
|
|
156
156
|
def __init__(self, struct: "_Struct_Union_Base") -> None:
|
|
157
157
|
self.struct = struct
|
|
158
158
|
|
|
159
159
|
|
|
160
|
-
class _Struct_Union_Base
|
|
160
|
+
class _Struct_Union_Base:
|
|
161
161
|
name: str
|
|
162
162
|
align: int
|
|
163
163
|
members: List[_UnionT["Field", Method, Constructor]]
|
|
@@ -198,7 +198,7 @@ class Structure(_Struct_Union_Base):
|
|
|
198
198
|
self.size = int(size)
|
|
199
199
|
else:
|
|
200
200
|
self.size = None
|
|
201
|
-
super(
|
|
201
|
+
super().__init__()
|
|
202
202
|
|
|
203
203
|
|
|
204
204
|
class Union(_Struct_Union_Base):
|
|
@@ -220,10 +220,10 @@ class Union(_Struct_Union_Base):
|
|
|
220
220
|
self.size = int(size)
|
|
221
221
|
else:
|
|
222
222
|
self.size = None
|
|
223
|
-
super(
|
|
223
|
+
super().__init__()
|
|
224
224
|
|
|
225
225
|
|
|
226
|
-
class Field
|
|
226
|
+
class Field:
|
|
227
227
|
def __init__(
|
|
228
228
|
self, name: str, typ: Any, bits: Optional[Any], offset: SupportsInt
|
|
229
229
|
) -> None:
|
|
@@ -233,14 +233,14 @@ class Field(object):
|
|
|
233
233
|
self.offset = int(offset)
|
|
234
234
|
|
|
235
235
|
|
|
236
|
-
class CvQualifiedType
|
|
236
|
+
class CvQualifiedType:
|
|
237
237
|
def __init__(self, typ, const, volatile):
|
|
238
238
|
self.typ = typ
|
|
239
239
|
self.const = const
|
|
240
240
|
self.volatile = volatile
|
|
241
241
|
|
|
242
242
|
|
|
243
|
-
class Enumeration
|
|
243
|
+
class Enumeration:
|
|
244
244
|
location = None
|
|
245
245
|
|
|
246
246
|
def __init__(self, name: str, size: SupportsInt, align: SupportsInt) -> None:
|
|
@@ -253,14 +253,14 @@ class Enumeration(object):
|
|
|
253
253
|
self.values.append(v)
|
|
254
254
|
|
|
255
255
|
|
|
256
|
-
class EnumValue
|
|
256
|
+
class EnumValue:
|
|
257
257
|
def __init__(self, name: str, value: int, enumeration: Enumeration) -> None:
|
|
258
258
|
self.name = name
|
|
259
259
|
self.value = value
|
|
260
260
|
self.enumeration = enumeration
|
|
261
261
|
|
|
262
262
|
|
|
263
|
-
class Variable
|
|
263
|
+
class Variable:
|
|
264
264
|
location = None
|
|
265
265
|
|
|
266
266
|
def __init__(self, name, typ, init=None):
|