py2docfx 0.1.15rc2025477__py3-none-any.whl → 0.1.16__py3-none-any.whl
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.
- py2docfx/docfx_yaml/process_doctree.py +21 -34
- py2docfx/docfx_yaml/tests/test_method_arguments.py +1 -7
- py2docfx/docfx_yaml/tests/test_process_doctree.py +120 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_core_metadata.py +21 -5
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +13 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/ccompiler.py +5 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build.py +1 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_clib.py +1 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_ext.py +1 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/check.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/install.py +8 -17
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compat/numpy.py +2 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +8 -5
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +15 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/dist.py +2 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -10
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +60 -5
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/unixccompiler.py +6 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/util.py +7 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_normalization.py +29 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py +613 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +2 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +25 -594
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +6 -6
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +282 -223
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +22 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +16 -13
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +40 -9
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +6 -2
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +49 -11
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +31 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +222 -129
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +30 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +168 -51
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/msvc.py +12 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +246 -13
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +42 -29
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +1 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +93 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +17 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_core_metadata.py +45 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +24 -4
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_sdist.py +13 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_database.py +22 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +82 -35
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/builder.py +4 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/containers.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/decoder.py +62 -115
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_edition_defaults.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_message.py +15 -18
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/testing_refleaks.py +4 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/type_checkers.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/well_known_types.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/json_format.py +25 -9
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message.py +26 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message_factory.py +0 -63
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto.py +38 -1
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto_text.py +129 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/reflection.py +0 -49
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/symbol_database.py +0 -18
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_format.py +8 -3
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/unknown_fields.py +3 -4
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/msal/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/msal/application.py +51 -17
- py2docfx/venv/venv1/Lib/site-packages/msal/broker.py +18 -4
- py2docfx/venv/venv1/Lib/site-packages/msal/cloudshell.py +5 -1
- py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +5 -4
- py2docfx/venv/venv1/Lib/site-packages/msal/sku.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/token_cache.py +31 -10
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/__init__.py +2 -3
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/cache_lock.py +4 -1
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/filelock.py +62 -0
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/libsecret.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/token_cache.py +7 -1
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_core_metadata.py +21 -5
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/ccompiler.py +5 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build.py +1 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_clib.py +1 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_ext.py +1 -8
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/check.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/install.py +8 -17
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compat/numpy.py +2 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +8 -5
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +15 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/dist.py +2 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -10
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +60 -5
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/unixccompiler.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/util.py +7 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_normalization.py +29 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py +613 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +25 -594
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +6 -6
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +282 -223
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +22 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +16 -13
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +40 -9
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +6 -2
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +49 -11
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +31 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +222 -129
- py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +30 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +168 -51
- py2docfx/venv/venv1/Lib/site-packages/setuptools/msvc.py +12 -3
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +246 -13
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +42 -29
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +93 -8
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +17 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_core_metadata.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +24 -4
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_sdist.py +13 -1
- py2docfx/venv/venv1/Lib/site-packages/typing_extensions.py +999 -74
- {py2docfx-0.1.15rc2025477.dist-info → py2docfx-0.1.16.dist-info}/METADATA +1 -1
- {py2docfx-0.1.15rc2025477.dist-info → py2docfx-0.1.16.dist-info}/RECORD +141 -596
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/__init__.py +0 -82
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/ado_consts.py +0 -283
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/adodbapi.py +0 -1153
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/apibase.py +0 -723
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_print.py +0 -72
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_table_names.py +0 -21
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_read.py +0 -41
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_write.py +0 -41
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/is64bit.py +0 -34
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/process_connect_string.py +0 -137
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/schema_table.py +0 -16
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/setup.py +0 -68
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitest.py +0 -1547
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitestconfig.py +0 -184
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/dbapi20.py +0 -879
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/is64bit.py +0 -34
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/setuptestframework.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/test_adodbapi_dbapi20.py +0 -195
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/tryconnection.py +0 -30
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/_parameterized.py +0 -420
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/service.py +0 -213
- py2docfx/venv/venv1/Lib/site-packages/isapi/__init__.py +0 -39
- py2docfx/venv/venv1/Lib/site-packages/isapi/install.py +0 -809
- py2docfx/venv/venv1/Lib/site-packages/isapi/isapicon.py +0 -121
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/advanced.py +0 -218
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector.py +0 -116
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_asynch.py +0 -85
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_with_filter.py +0 -162
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/test.py +0 -195
- py2docfx/venv/venv1/Lib/site-packages/isapi/simple.py +0 -73
- py2docfx/venv/venv1/Lib/site-packages/isapi/test/extension_simple.py +0 -114
- py2docfx/venv/venv1/Lib/site-packages/isapi/threaded_extension.py +0 -191
- py2docfx/venv/venv1/Lib/site-packages/portalocker/__about__.py +0 -6
- py2docfx/venv/venv1/Lib/site-packages/portalocker/__init__.py +0 -79
- py2docfx/venv/venv1/Lib/site-packages/portalocker/__main__.py +0 -122
- py2docfx/venv/venv1/Lib/site-packages/portalocker/constants.py +0 -59
- py2docfx/venv/venv1/Lib/site-packages/portalocker/exceptions.py +0 -27
- py2docfx/venv/venv1/Lib/site-packages/portalocker/portalocker.py +0 -154
- py2docfx/venv/venv1/Lib/site-packages/portalocker/redis.py +0 -236
- py2docfx/venv/venv1/Lib/site-packages/portalocker/utils.py +0 -569
- py2docfx/venv/venv1/Lib/site-packages/pythoncom.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/basictimerapp.py +0 -258
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/customprint.py +0 -183
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/demoutils.py +0 -63
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dlgappdemo.py +0 -51
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dojobapp.py +0 -71
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/helloapp.py +0 -53
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/cmdserver.py +0 -113
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/createwin.py +0 -114
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/demoutils.py +0 -65
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dibdemo.py +0 -73
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dlgtest.py +0 -145
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dyndlg.py +0 -104
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/fontdemo.py +0 -85
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/guidemo.py +0 -53
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/hiertest.py +0 -138
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/menutest.py +0 -13
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/objdoc.py +0 -57
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/demoutils.py +0 -63
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/flash.py +0 -95
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/msoffice.py +0 -159
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxserialtest.py +0 -132
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxtest.py +0 -243
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/webbrowser.py +0 -72
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/openGLDemo.py +0 -415
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/progressbar.py +0 -105
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/sliderdemo.py +0 -76
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/splittst.py +0 -79
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/threadedgui.py +0 -189
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/toolbar.py +0 -105
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/__init__.py +0 -3
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/__init__.py +0 -133
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/configui.py +0 -34
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgcon.py +0 -31
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgpyapp.py +0 -48
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/debugger.py +0 -1097
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/fail.py +0 -54
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/ideoptions.py +0 -136
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/list.py +0 -146
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/login.py +0 -155
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/status.py +0 -242
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/DockingBar.py +0 -676
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/app.py +0 -411
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/bitmap.py +0 -168
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/cmdline.py +0 -54
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dbgcommands.py +0 -188
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dlgappcore.py +0 -76
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/ModuleBrowser.py +0 -235
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/__init__.py +0 -105
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color/coloreditor.py +0 -646
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/configui.py +0 -299
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/document.py +0 -379
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/editor.py +0 -511
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/frame.py +0 -74
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/template.py +0 -59
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/vss.py +0 -104
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/help.py +0 -173
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/interact.py +0 -995
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpyapp.py +0 -552
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpydde.py +0 -65
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/scriptutils.py +0 -684
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/sgrepmdi.py +0 -749
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/startup.py +0 -70
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/stdin.py +0 -172
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/toolmenu.py +0 -279
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/window.py +0 -14
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/winout.py +0 -589
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoExpand.py +0 -95
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoIndent.py +0 -536
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/CallTips.py +0 -216
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/FormatParagraph.py +0 -166
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/IdleHistory.py +0 -87
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/PyParse.py +0 -585
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/activex.py +0 -79
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/afxres.py +0 -501
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/dialog.py +0 -277
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/docview.py +0 -151
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/object.py +0 -66
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/thread.py +0 -25
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/window.py +0 -50
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/IDLEenvironment.py +0 -593
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/bindings.py +0 -180
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/config.py +0 -363
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/configui.py +0 -291
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/control.py +0 -565
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/document.py +0 -312
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/find.py +0 -511
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/formatter.py +0 -704
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/keycodes.py +0 -190
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/scintillacon.py +0 -3083
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/view.py +0 -841
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/TraceCollector.py +0 -79
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browseProjects.py +0 -323
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browser.py +0 -494
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/hierlist.py +0 -353
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regedit.py +0 -382
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regpy.py +0 -80
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupRead_BackupWrite.py +0 -119
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupSeek_streamheaders.py +0 -137
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CopyFileEx.py +0 -57
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CreateFileTransacted_MiniVersion.py +0 -122
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtFormatMessage.py +0 -83
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_pull.py +0 -28
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_push.py +0 -32
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/FileSecurityTest.py +0 -137
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/GetSaveFileName.py +0 -43
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/NetValidatePasswordPolicy.py +0 -127
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/OpenEncryptedFileRaw.py +0 -66
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegCreateKeyTransacted.py +0 -60
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegRestoreKey.py +0 -71
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/SystemParametersInfo.py +0 -210
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/c_extension/setup.py +0 -26
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeclient.py +0 -18
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeserver.py +0 -42
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/desktopmanager.py +0 -246
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/eventLogDemo.py +0 -143
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/getfilever.py +0 -33
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/mmapfile_demo.py +0 -101
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/cat.py +0 -17
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/runproc.py +0 -114
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/print_desktop.py +0 -113
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/rastest.py +0 -166
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/GetTokenInformation.py +0 -110
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/account_rights.py +0 -49
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/explicit_entries.py +0 -170
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/get_policy_info.py +0 -39
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/list_rights.py +0 -35
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/localized_names.py +0 -70
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsaregevent.py +0 -14
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsastore.py +0 -12
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/query_information.py +0 -25
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsave_sa.py +0 -61
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsecurity.py +0 -36
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sa_inherit.py +0 -8
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/security_enums.py +0 -336
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_audit.py +0 -106
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_owner.py +0 -73
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_policy_info.py +0 -25
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setkernelobjectsecurity.py +0 -134
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setnamedsecurityinfo.py +0 -131
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setsecurityinfo.py +0 -131
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setuserobjectsecurity.py +0 -102
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/fetch_url.py +0 -158
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/simple_auth.py +0 -72
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/socket_server.py +0 -199
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/validate_password.py +0 -41
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/nativePipeTestService.py +0 -63
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestService.py +0 -185
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestServiceClient.py +0 -158
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/serviceEvents.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/timer_demo.py +0 -72
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboardDemo.py +0 -155
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboard_bitmapdemo.py +0 -117
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32comport_demo.py +0 -174
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32console_demo.py +0 -132
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32cred_demo.py +0 -82
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32fileDemo.py +0 -41
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_demo.py +0 -177
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_devicenotify.py +0 -106
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_dialog.py +0 -445
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_menu.py +0 -464
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_taskbar.py +0 -136
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32netdemo.py +0 -272
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32rcparser_demo.py +0 -86
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32servicedemo.py +0 -23
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32ts_logoff_disconnected.py +0 -25
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/testwnet.py +0 -123
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/winnetwk.py +0 -100
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/winprocess.py +0 -230
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/_win32verstamp_pywin32ctypes.py +0 -164
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/afxres.py +0 -8
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/commctrl.py +0 -1551
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/mmsystem.py +0 -956
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/netbios.py +0 -293
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/ntsecuritycon.py +0 -731
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_bootstrap.py +0 -21
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_testutil.py +0 -291
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywintypes.py +0 -124
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/rasutil.py +0 -40
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/regcheck.py +0 -161
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/regutil.py +0 -395
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspi.py +0 -413
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspicon.py +0 -477
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win2kras.py +0 -14
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32con.py +0 -5064
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32cryptcon.py +0 -1922
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32evtlogutil.py +0 -225
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32gui_struct.py +0 -957
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32inetcon.py +0 -1086
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32netcon.py +0 -627
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhquery.py +0 -570
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhutil.py +0 -212
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32rcparser.py +0 -674
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32serviceutil.py +0 -1073
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32timezone.py +0 -1201
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32traceutil.py +0 -59
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32verstamp.py +0 -235
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winerror.py +0 -7362
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winioctlcon.py +0 -1079
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winnt.py +0 -1347
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winperf.py +0 -236
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winxptheme.py +0 -8
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/ControlService.py +0 -594
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/BrandProject.py +0 -97
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/bulkstamp.py +0 -156
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/vssutil.py +0 -201
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/backupEventLog.py +0 -46
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/h2py.py +0 -194
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/killProcName.py +0 -62
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/pywin32_postinstall.py +0 -733
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/pywin32_testall.py +0 -120
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/rasutil.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/regsetup.py +0 -607
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/setup_d.py +0 -111
- py2docfx/venv/venv1/Lib/site-packages/win32/test/handles.py +0 -175
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_clipboard.py +0 -137
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_exceptions.py +0 -213
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_odbc.py +0 -264
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_pywintypes.py +0 -111
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_security.py +0 -166
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_sspi.py +0 -229
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32api.py +0 -273
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32clipboard.py +0 -59
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32cred.py +0 -91
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32crypt.py +0 -144
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32event.py +0 -119
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32file.py +0 -1096
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32gui.py +0 -227
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32guistruct.py +0 -333
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32inet.py +0 -108
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32net.py +0 -23
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32pipe.py +0 -148
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32print.py +0 -24
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32profile.py +0 -19
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32rcparser.py +0 -70
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32timezone.py +0 -16
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32trace.py +0 -366
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32ts.py +0 -19
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32wnet.py +0 -174
- py2docfx/venv/venv1/Lib/site-packages/win32/test/testall.py +0 -223
- py2docfx/venv/venv1/Lib/site-packages/win32/winxpgui.py +0 -13
- py2docfx/venv/venv1/Lib/site-packages/win32com/__init__.py +0 -134
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/CLSIDToClass.py +0 -60
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/__init__.py +0 -717
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/build.py +0 -771
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/combrowse.py +0 -604
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/connect.py +0 -48
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/dynamic.py +0 -699
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/gencache.py +0 -825
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/genpy.py +0 -1350
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/makepy.py +0 -453
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/selecttlb.py +0 -182
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/tlbrowse.py +0 -277
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/util.py +0 -103
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/connect.py +0 -96
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/dump_clipboard.py +0 -74
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsApartmentThreaded.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsFreeThreaded.py +0 -92
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelAddin.py +0 -169
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelRTDServer.py +0 -434
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/iebutton.py +0 -214
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/ietoolbar.py +0 -368
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/outlookAddin.py +0 -135
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/trybag.py +0 -78
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegw.py +0 -618
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwenum.py +0 -331
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwparse.py +0 -1017
- py2docfx/venv/venv1/Lib/site-packages/win32com/olectl.py +0 -70
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/connect.py +0 -85
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/dispatcher.py +0 -239
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/exception.py +0 -99
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/factory.py +0 -26
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/localserver.py +0 -53
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/policy.py +0 -803
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/register.py +0 -677
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/util.py +0 -229
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/PythonTools.py +0 -47
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/dictionary.py +0 -133
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/interp.py +0 -59
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/perfmon.py +0 -36
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/test_pycomtest.py +0 -181
- py2docfx/venv/venv1/Lib/site-packages/win32com/storagecon.py +0 -142
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/GenTestScripts.py +0 -95
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/daodump.py +0 -88
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/errorSemantics.py +0 -243
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/pippo_server.py +0 -96
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/policySemantics.py +0 -115
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testADOEvents.py +0 -100
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAXScript.py +0 -44
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAccess.py +0 -185
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testArrays.py +0 -99
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testClipboard.py +0 -169
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testCollections.py +0 -159
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testConversionErrors.py +0 -35
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDCOM.py +0 -50
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDates.py +0 -74
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDictionary.py +0 -101
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDynamic.py +0 -83
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExchange.py +0 -121
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExplorer.py +0 -139
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGIT.py +0 -142
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGatewayAddresses.py +0 -149
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testIterators.py +0 -140
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOffice.py +0 -184
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOfficeEvents.py +0 -138
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMarshal.py +0 -160
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPersist.py +0 -227
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPippo.py +0 -80
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPyComTest.py +0 -918
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testROT.py +0 -29
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testServers.py +0 -51
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testShell.py +0 -272
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStorage.py +0 -88
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStreams.py +0 -147
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testWMI.py +0 -18
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testall.py +0 -320
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testmakepy.py +0 -54
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvb.py +0 -583
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvbscript_regexp.py +0 -40
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testxslt.py +0 -34
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/util.py +0 -262
- py2docfx/venv/venv1/Lib/site-packages/win32com/universal.py +0 -224
- py2docfx/venv/venv1/Lib/site-packages/win32com/util.py +0 -35
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/__init__.py +0 -113
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/adsicon.py +0 -340
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/objectPicker.py +0 -68
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/scp.py +0 -565
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/search.py +0 -151
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/test.py +0 -274
- py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/__init__.py +0 -6
- py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditSecurity.py +0 -229
- py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditServiceSecurity.py +0 -219
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axcontrol/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/adb.py +0 -467
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/codecontainer.py +0 -279
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/contexts.py +0 -58
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/debugger.py +0 -238
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/documents.py +0 -135
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/dump.py +0 -57
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/expressions.py +0 -212
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/gateways.py +0 -583
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/stackframe.py +0 -178
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/util.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/asputil.py +0 -13
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/debug.py +0 -223
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/error.py +0 -262
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/framework.py +0 -1291
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pydumper.py +0 -78
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript.py +0 -438
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript_rexec.py +0 -54
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/scriptdispatch.py +0 -103
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/axsite.py +0 -145
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/leakTest.py +0 -185
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost.py +0 -240
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost4Dbg.py +0 -83
- py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/__init__.py +0 -6
- py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/show_all_jobs.py +0 -48
- py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/test_bits.py +0 -119
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_record.py +0 -60
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_test.py +0 -402
- py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/demo/filterDemo.py +0 -300
- py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/ifiltercon.py +0 -110
- py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/inetcon.py +0 -261
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/__init__.py +0 -21
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/demos/mapisend.py +0 -98
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/emsabtags.py +0 -875
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapitags.py +0 -1023
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapiutil.py +0 -211
- py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/__init__.py +0 -1
- py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/pscon.py +0 -838
- py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/test/testpropsys.py +0 -5
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/__init__.py +0 -4
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IActiveDesktop.py +0 -83
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IFileOperationProgressSink.py +0 -179
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IShellLinkDataList.py +0 -67
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/ITransferAdviseSink.py +0 -93
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IUniformResourceLocator.py +0 -56
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/browse_for_folder.py +0 -45
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/create_link.py +0 -73
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/dump_link.py +0 -58
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/explorer_browser.py +0 -143
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/column_provider.py +0 -125
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/context_menu.py +0 -122
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/copy_hook.py +0 -84
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/empty_volume_cache.py +0 -188
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/folder_view.py +0 -866
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/icon_handler.py +0 -81
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/shell_view.py +0 -971
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/shellexecuteex.py +0 -19
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/viewstate.py +0 -68
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/walk_shell_folders.py +0 -24
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/shellcon.py +0 -1615
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testSHFileOperation.py +0 -75
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellFolder.py +0 -21
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellItem.py +0 -69
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/__init__.py +0 -6
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask.py +0 -66
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_1.py +0 -68
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_2.py +0 -49
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_localsystem.py +0 -3
- py2docfx/venv/venv1/Scripts/pywin32_postinstall.py +0 -733
- py2docfx/venv/venv1/Scripts/pywin32_testall.py +0 -120
- {py2docfx-0.1.15rc2025477.dist-info → py2docfx-0.1.16.dist-info}/WHEEL +0 -0
- {py2docfx-0.1.15rc2025477.dist-info → py2docfx-0.1.16.dist-info}/top_level.txt +0 -0
@@ -1,699 +0,0 @@
|
|
1
|
-
"""Support for dynamic COM client support.
|
2
|
-
|
3
|
-
Introduction
|
4
|
-
Dynamic COM client support is the ability to use a COM server without
|
5
|
-
prior knowledge of the server. This can be used to talk to almost all
|
6
|
-
COM servers, including much of MS Office.
|
7
|
-
|
8
|
-
In general, you should not use this module directly - see below.
|
9
|
-
|
10
|
-
Example
|
11
|
-
>>> import win32com.client
|
12
|
-
>>> xl = win32com.client.Dispatch("Excel.Application")
|
13
|
-
# The line above invokes the functionality of this class.
|
14
|
-
# xl is now an object we can use to talk to Excel.
|
15
|
-
>>> xl.Visible = 1 # The Excel window becomes visible.
|
16
|
-
|
17
|
-
"""
|
18
|
-
|
19
|
-
import traceback
|
20
|
-
from itertools import chain
|
21
|
-
from types import MethodType
|
22
|
-
|
23
|
-
import pythoncom # Needed as code we eval() references it.
|
24
|
-
import win32com.client
|
25
|
-
import winerror
|
26
|
-
from pywintypes import IIDType
|
27
|
-
|
28
|
-
from . import build
|
29
|
-
|
30
|
-
debugging = 0 # General debugging
|
31
|
-
debugging_attr = 0 # Debugging dynamic attribute lookups.
|
32
|
-
|
33
|
-
LCID = 0x0
|
34
|
-
|
35
|
-
# These errors generally mean the property or method exists,
|
36
|
-
# but can't be used in this context - eg, property instead of a method, etc.
|
37
|
-
# Used to determine if we have a real error or not.
|
38
|
-
ERRORS_BAD_CONTEXT = [
|
39
|
-
winerror.DISP_E_MEMBERNOTFOUND,
|
40
|
-
winerror.DISP_E_BADPARAMCOUNT,
|
41
|
-
winerror.DISP_E_PARAMNOTOPTIONAL,
|
42
|
-
winerror.DISP_E_TYPEMISMATCH,
|
43
|
-
winerror.E_INVALIDARG,
|
44
|
-
]
|
45
|
-
|
46
|
-
ALL_INVOKE_TYPES = [
|
47
|
-
pythoncom.INVOKE_PROPERTYGET,
|
48
|
-
pythoncom.INVOKE_PROPERTYPUT,
|
49
|
-
pythoncom.INVOKE_PROPERTYPUTREF,
|
50
|
-
pythoncom.INVOKE_FUNC,
|
51
|
-
]
|
52
|
-
|
53
|
-
|
54
|
-
def debug_print(*args):
|
55
|
-
if debugging:
|
56
|
-
for arg in args:
|
57
|
-
print(arg, end=" ")
|
58
|
-
print()
|
59
|
-
|
60
|
-
|
61
|
-
def debug_attr_print(*args):
|
62
|
-
if debugging_attr:
|
63
|
-
for arg in args:
|
64
|
-
print(arg, end=" ")
|
65
|
-
print()
|
66
|
-
|
67
|
-
|
68
|
-
# get the type objects for IDispatch and IUnknown
|
69
|
-
PyIDispatchType = pythoncom.TypeIIDs[pythoncom.IID_IDispatch]
|
70
|
-
PyIUnknownType = pythoncom.TypeIIDs[pythoncom.IID_IUnknown]
|
71
|
-
|
72
|
-
_GoodDispatchTypes = (str, IIDType)
|
73
|
-
|
74
|
-
|
75
|
-
def _GetGoodDispatch(IDispatch, clsctx=pythoncom.CLSCTX_SERVER):
|
76
|
-
# quick return for most common case
|
77
|
-
if isinstance(IDispatch, PyIDispatchType):
|
78
|
-
return IDispatch
|
79
|
-
if isinstance(IDispatch, _GoodDispatchTypes):
|
80
|
-
try:
|
81
|
-
IDispatch = pythoncom.connect(IDispatch)
|
82
|
-
except pythoncom.ole_error:
|
83
|
-
IDispatch = pythoncom.CoCreateInstance(
|
84
|
-
IDispatch, None, clsctx, pythoncom.IID_IDispatch
|
85
|
-
)
|
86
|
-
else:
|
87
|
-
# may already be a wrapped class.
|
88
|
-
IDispatch = getattr(IDispatch, "_oleobj_", IDispatch)
|
89
|
-
return IDispatch
|
90
|
-
|
91
|
-
|
92
|
-
def _GetGoodDispatchAndUserName(IDispatch, userName, clsctx):
|
93
|
-
# Get a dispatch object, and a 'user name' (ie, the name as
|
94
|
-
# displayed to the user in repr() etc.
|
95
|
-
if userName is None:
|
96
|
-
if isinstance(IDispatch, str):
|
97
|
-
userName = IDispatch
|
98
|
-
## ??? else userName remains None ???
|
99
|
-
else:
|
100
|
-
userName = str(userName)
|
101
|
-
return (_GetGoodDispatch(IDispatch, clsctx), userName)
|
102
|
-
|
103
|
-
|
104
|
-
def _GetDescInvokeType(entry, invoke_type):
|
105
|
-
# determine the wFlags argument passed as input to IDispatch::Invoke
|
106
|
-
# Only ever called by __getattr__ and __setattr__ from dynamic objects!
|
107
|
-
# * `entry` is a MapEntry with whatever typeinfo we have about the property we are getting/setting.
|
108
|
-
# * `invoke_type` is either INVOKE_PROPERTYGET | INVOKE_PROPERTYSET and really just
|
109
|
-
# means "called by __getattr__" or "called by __setattr__"
|
110
|
-
if not entry or not entry.desc:
|
111
|
-
return invoke_type
|
112
|
-
|
113
|
-
if entry.desc.desckind == pythoncom.DESCKIND_VARDESC:
|
114
|
-
return invoke_type
|
115
|
-
|
116
|
-
# So it's a FUNCDESC - just use what it specifies.
|
117
|
-
return entry.desc.invkind
|
118
|
-
|
119
|
-
|
120
|
-
def Dispatch(
|
121
|
-
IDispatch,
|
122
|
-
userName=None,
|
123
|
-
createClass=None,
|
124
|
-
typeinfo=None,
|
125
|
-
clsctx=pythoncom.CLSCTX_SERVER,
|
126
|
-
):
|
127
|
-
IDispatch, userName = _GetGoodDispatchAndUserName(IDispatch, userName, clsctx)
|
128
|
-
if createClass is None:
|
129
|
-
createClass = CDispatch
|
130
|
-
lazydata = None
|
131
|
-
try:
|
132
|
-
if typeinfo is None:
|
133
|
-
typeinfo = IDispatch.GetTypeInfo()
|
134
|
-
if typeinfo is not None:
|
135
|
-
try:
|
136
|
-
# try for a typecomp
|
137
|
-
typecomp = typeinfo.GetTypeComp()
|
138
|
-
lazydata = typeinfo, typecomp
|
139
|
-
except pythoncom.com_error:
|
140
|
-
pass
|
141
|
-
except pythoncom.com_error:
|
142
|
-
typeinfo = None
|
143
|
-
olerepr = MakeOleRepr(IDispatch, typeinfo, lazydata)
|
144
|
-
return createClass(IDispatch, olerepr, userName, lazydata=lazydata)
|
145
|
-
|
146
|
-
|
147
|
-
def MakeOleRepr(IDispatch, typeinfo, typecomp):
|
148
|
-
olerepr = None
|
149
|
-
if typeinfo is not None:
|
150
|
-
try:
|
151
|
-
attr = typeinfo.GetTypeAttr()
|
152
|
-
# If the type info is a special DUAL interface, magically turn it into
|
153
|
-
# a DISPATCH typeinfo.
|
154
|
-
if (
|
155
|
-
attr[5] == pythoncom.TKIND_INTERFACE
|
156
|
-
and attr[11] & pythoncom.TYPEFLAG_FDUAL
|
157
|
-
):
|
158
|
-
# Get corresponding Disp interface;
|
159
|
-
# -1 is a special value which does this for us.
|
160
|
-
href = typeinfo.GetRefTypeOfImplType(-1)
|
161
|
-
typeinfo = typeinfo.GetRefTypeInfo(href)
|
162
|
-
attr = typeinfo.GetTypeAttr()
|
163
|
-
if typecomp is None:
|
164
|
-
olerepr = build.DispatchItem(typeinfo, attr, None, 0)
|
165
|
-
else:
|
166
|
-
olerepr = build.LazyDispatchItem(attr, None)
|
167
|
-
except pythoncom.ole_error:
|
168
|
-
pass
|
169
|
-
if olerepr is None:
|
170
|
-
olerepr = build.DispatchItem()
|
171
|
-
return olerepr
|
172
|
-
|
173
|
-
|
174
|
-
def DumbDispatch(
|
175
|
-
IDispatch,
|
176
|
-
userName=None,
|
177
|
-
createClass=None,
|
178
|
-
clsctx=pythoncom.CLSCTX_SERVER,
|
179
|
-
):
|
180
|
-
"Dispatch with no type info"
|
181
|
-
IDispatch, userName = _GetGoodDispatchAndUserName(IDispatch, userName, clsctx)
|
182
|
-
if createClass is None:
|
183
|
-
createClass = CDispatch
|
184
|
-
return createClass(IDispatch, build.DispatchItem(), userName)
|
185
|
-
|
186
|
-
|
187
|
-
class CDispatch:
|
188
|
-
def __init__(self, IDispatch, olerepr, userName=None, lazydata=None):
|
189
|
-
if userName is None:
|
190
|
-
userName = "<unknown>"
|
191
|
-
self.__dict__["_oleobj_"] = IDispatch
|
192
|
-
self.__dict__["_username_"] = userName
|
193
|
-
self.__dict__["_olerepr_"] = olerepr
|
194
|
-
self.__dict__["_mapCachedItems_"] = {}
|
195
|
-
self.__dict__["_builtMethods_"] = {}
|
196
|
-
self.__dict__["_enum_"] = None
|
197
|
-
self.__dict__["_unicode_to_string_"] = None
|
198
|
-
self.__dict__["_lazydata_"] = lazydata
|
199
|
-
|
200
|
-
def __call__(self, *args):
|
201
|
-
"Provide 'default dispatch' COM functionality - allow instance to be called"
|
202
|
-
if self._olerepr_.defaultDispatchName:
|
203
|
-
invkind, dispid = self._find_dispatch_type_(
|
204
|
-
self._olerepr_.defaultDispatchName
|
205
|
-
)
|
206
|
-
else:
|
207
|
-
invkind, dispid = (
|
208
|
-
pythoncom.DISPATCH_METHOD | pythoncom.DISPATCH_PROPERTYGET,
|
209
|
-
pythoncom.DISPID_VALUE,
|
210
|
-
)
|
211
|
-
if invkind is not None:
|
212
|
-
allArgs = (dispid, LCID, invkind, 1) + args
|
213
|
-
return self._get_good_object_(
|
214
|
-
self._oleobj_.Invoke(*allArgs), self._olerepr_.defaultDispatchName, None
|
215
|
-
)
|
216
|
-
raise TypeError("This dispatch object does not define a default method")
|
217
|
-
|
218
|
-
def __bool__(self):
|
219
|
-
return True # ie "if object:" should always be "true" - without this, __len__ is tried.
|
220
|
-
# _Possibly_ want to defer to __len__ if available, but I'm not sure this is
|
221
|
-
# desirable???
|
222
|
-
|
223
|
-
def __repr__(self):
|
224
|
-
return "<COMObject %s>" % (self._username_)
|
225
|
-
|
226
|
-
def __str__(self):
|
227
|
-
# __str__ is used when the user does "print(object)", so we gracefully
|
228
|
-
# fall back to the __repr__ if the object has no default method.
|
229
|
-
try:
|
230
|
-
return str(self.__call__())
|
231
|
-
except pythoncom.com_error as details:
|
232
|
-
if details.hresult not in ERRORS_BAD_CONTEXT:
|
233
|
-
raise
|
234
|
-
return self.__repr__()
|
235
|
-
|
236
|
-
def __dir__(self):
|
237
|
-
attributes = chain(self.__dict__, dir(self.__class__), self._dir_ole_())
|
238
|
-
try:
|
239
|
-
attributes = chain(attributes, [p.Name for p in self.Properties_])
|
240
|
-
except AttributeError:
|
241
|
-
pass
|
242
|
-
return list(set(attributes))
|
243
|
-
|
244
|
-
def _dir_ole_(self):
|
245
|
-
items_dict = {}
|
246
|
-
for iTI in range(0, self._oleobj_.GetTypeInfoCount()):
|
247
|
-
typeInfo = self._oleobj_.GetTypeInfo(iTI)
|
248
|
-
self._UpdateWithITypeInfo_(items_dict, typeInfo)
|
249
|
-
return list(items_dict)
|
250
|
-
|
251
|
-
def _UpdateWithITypeInfo_(self, items_dict, typeInfo):
|
252
|
-
typeInfos = [typeInfo]
|
253
|
-
# suppress IDispatch and IUnknown methods
|
254
|
-
inspectedIIDs = {pythoncom.IID_IDispatch: None}
|
255
|
-
|
256
|
-
while len(typeInfos) > 0:
|
257
|
-
typeInfo = typeInfos.pop()
|
258
|
-
typeAttr = typeInfo.GetTypeAttr()
|
259
|
-
|
260
|
-
if typeAttr.iid not in inspectedIIDs:
|
261
|
-
inspectedIIDs[typeAttr.iid] = None
|
262
|
-
for iFun in range(0, typeAttr.cFuncs):
|
263
|
-
funDesc = typeInfo.GetFuncDesc(iFun)
|
264
|
-
funName = typeInfo.GetNames(funDesc.memid)[0]
|
265
|
-
if funName not in items_dict:
|
266
|
-
items_dict[funName] = None
|
267
|
-
|
268
|
-
# Inspect the type info of all implemented types
|
269
|
-
# E.g. IShellDispatch5 implements IShellDispatch4 which implements IShellDispatch3 ...
|
270
|
-
for iImplType in range(0, typeAttr.cImplTypes):
|
271
|
-
iRefType = typeInfo.GetRefTypeOfImplType(iImplType)
|
272
|
-
refTypeInfo = typeInfo.GetRefTypeInfo(iRefType)
|
273
|
-
typeInfos.append(refTypeInfo)
|
274
|
-
|
275
|
-
# Delegate comparison to the oleobjs, as they know how to do identity.
|
276
|
-
def __eq__(self, other):
|
277
|
-
other = getattr(other, "_oleobj_", other)
|
278
|
-
return self._oleobj_ == other
|
279
|
-
|
280
|
-
def __ne__(self, other):
|
281
|
-
other = getattr(other, "_oleobj_", other)
|
282
|
-
return self._oleobj_ != other
|
283
|
-
|
284
|
-
def __int__(self):
|
285
|
-
return int(self.__call__())
|
286
|
-
|
287
|
-
def __len__(self):
|
288
|
-
invkind, dispid = self._find_dispatch_type_("Count")
|
289
|
-
if invkind:
|
290
|
-
return self._oleobj_.Invoke(dispid, LCID, invkind, 1)
|
291
|
-
raise TypeError("This dispatch object does not define a Count method")
|
292
|
-
|
293
|
-
def _NewEnum(self):
|
294
|
-
try:
|
295
|
-
invkind = pythoncom.DISPATCH_METHOD | pythoncom.DISPATCH_PROPERTYGET
|
296
|
-
enum = self._oleobj_.InvokeTypes(
|
297
|
-
pythoncom.DISPID_NEWENUM, LCID, invkind, (13, 10), ()
|
298
|
-
)
|
299
|
-
except pythoncom.com_error:
|
300
|
-
return None # no enumerator for this object.
|
301
|
-
from . import util
|
302
|
-
|
303
|
-
return util.WrapEnum(enum, None)
|
304
|
-
|
305
|
-
def __getitem__(self, index): # syver modified
|
306
|
-
# Improved __getitem__ courtesy Syver Enstad
|
307
|
-
# Must check _NewEnum before Item, to ensure b/w compat.
|
308
|
-
if isinstance(index, int):
|
309
|
-
if self.__dict__["_enum_"] is None:
|
310
|
-
self.__dict__["_enum_"] = self._NewEnum()
|
311
|
-
if self.__dict__["_enum_"] is not None:
|
312
|
-
return self._get_good_object_(self._enum_.__getitem__(index))
|
313
|
-
# See if we have an "Item" method/property we can use (goes hand in hand with Count() above!)
|
314
|
-
invkind, dispid = self._find_dispatch_type_("Item")
|
315
|
-
if invkind is not None:
|
316
|
-
return self._get_good_object_(
|
317
|
-
self._oleobj_.Invoke(dispid, LCID, invkind, 1, index)
|
318
|
-
)
|
319
|
-
raise TypeError("This object does not support enumeration")
|
320
|
-
|
321
|
-
def __setitem__(self, index, *args):
|
322
|
-
# XXX - todo - We should support calling Item() here too!
|
323
|
-
# print("__setitem__ with", index, args)
|
324
|
-
if self._olerepr_.defaultDispatchName:
|
325
|
-
invkind, dispid = self._find_dispatch_type_(
|
326
|
-
self._olerepr_.defaultDispatchName
|
327
|
-
)
|
328
|
-
else:
|
329
|
-
invkind, dispid = (
|
330
|
-
pythoncom.DISPATCH_PROPERTYPUT | pythoncom.DISPATCH_PROPERTYPUTREF,
|
331
|
-
pythoncom.DISPID_VALUE,
|
332
|
-
)
|
333
|
-
if invkind is not None:
|
334
|
-
allArgs = (dispid, LCID, invkind, 0, index) + args
|
335
|
-
return self._get_good_object_(
|
336
|
-
self._oleobj_.Invoke(*allArgs), self._olerepr_.defaultDispatchName, None
|
337
|
-
)
|
338
|
-
raise TypeError("This dispatch object does not define a default method")
|
339
|
-
|
340
|
-
def _find_dispatch_type_(self, methodName):
|
341
|
-
if methodName in self._olerepr_.mapFuncs:
|
342
|
-
item = self._olerepr_.mapFuncs[methodName]
|
343
|
-
return item.desc[4], item.dispid
|
344
|
-
|
345
|
-
if methodName in self._olerepr_.propMapGet:
|
346
|
-
item = self._olerepr_.propMapGet[methodName]
|
347
|
-
return item.desc[4], item.dispid
|
348
|
-
|
349
|
-
try:
|
350
|
-
dispid = self._oleobj_.GetIDsOfNames(0, methodName)
|
351
|
-
except: ### what error?
|
352
|
-
return None, None
|
353
|
-
return pythoncom.DISPATCH_METHOD | pythoncom.DISPATCH_PROPERTYGET, dispid
|
354
|
-
|
355
|
-
def _ApplyTypes_(self, dispid, wFlags, retType, argTypes, user, resultCLSID, *args):
|
356
|
-
result = self._oleobj_.InvokeTypes(
|
357
|
-
*(dispid, LCID, wFlags, retType, argTypes) + args
|
358
|
-
)
|
359
|
-
return self._get_good_object_(result, user, resultCLSID)
|
360
|
-
|
361
|
-
def _wrap_dispatch_(
|
362
|
-
self,
|
363
|
-
ob,
|
364
|
-
userName=None,
|
365
|
-
returnCLSID=None,
|
366
|
-
):
|
367
|
-
# Given a dispatch object, wrap it in a class
|
368
|
-
return Dispatch(ob, userName)
|
369
|
-
|
370
|
-
def _get_good_single_object_(self, ob, userName=None, ReturnCLSID=None):
|
371
|
-
if isinstance(ob, PyIDispatchType):
|
372
|
-
# make a new instance of (probably this) class.
|
373
|
-
return self._wrap_dispatch_(ob, userName, ReturnCLSID)
|
374
|
-
if isinstance(ob, PyIUnknownType):
|
375
|
-
try:
|
376
|
-
ob = ob.QueryInterface(pythoncom.IID_IDispatch)
|
377
|
-
except pythoncom.com_error:
|
378
|
-
# It is an IUnknown, but not an IDispatch, so just let it through.
|
379
|
-
return ob
|
380
|
-
return self._wrap_dispatch_(ob, userName, ReturnCLSID)
|
381
|
-
return ob
|
382
|
-
|
383
|
-
def _get_good_object_(self, ob, userName=None, ReturnCLSID=None):
|
384
|
-
"""Given an object (usually the retval from a method), make it a good object to return.
|
385
|
-
Basically checks if it is a COM object, and wraps it up.
|
386
|
-
Also handles the fact that a retval may be a tuple of retvals"""
|
387
|
-
if ob is None: # Quick exit!
|
388
|
-
return None
|
389
|
-
elif isinstance(ob, tuple):
|
390
|
-
return tuple(
|
391
|
-
map(
|
392
|
-
lambda o,
|
393
|
-
s=self,
|
394
|
-
oun=userName,
|
395
|
-
rc=ReturnCLSID: s._get_good_single_object_(o, oun, rc),
|
396
|
-
ob,
|
397
|
-
)
|
398
|
-
)
|
399
|
-
else:
|
400
|
-
return self._get_good_single_object_(ob)
|
401
|
-
|
402
|
-
def _make_method_(self, name):
|
403
|
-
"Make a method object - Assumes in olerepr funcmap"
|
404
|
-
methodName = build.MakePublicAttributeName(name) # translate keywords etc.
|
405
|
-
methodCodeList = self._olerepr_.MakeFuncMethod(
|
406
|
-
self._olerepr_.mapFuncs[name], methodName, 0
|
407
|
-
)
|
408
|
-
methodCode = "\n".join(methodCodeList)
|
409
|
-
try:
|
410
|
-
# print(f"Method code for {self._username_} is:\n", methodCode)
|
411
|
-
# self._print_details_()
|
412
|
-
codeObject = compile(methodCode, "<COMObject %s>" % self._username_, "exec")
|
413
|
-
# Exec the code object
|
414
|
-
tempNameSpace = {}
|
415
|
-
# "Dispatch" in the exec'd code is win32com.client.Dispatch, not ours.
|
416
|
-
globNameSpace = globals().copy()
|
417
|
-
globNameSpace["Dispatch"] = win32com.client.Dispatch
|
418
|
-
exec(
|
419
|
-
codeObject, globNameSpace, tempNameSpace
|
420
|
-
) # self.__dict__, self.__dict__
|
421
|
-
name = methodName
|
422
|
-
# Save the function in map.
|
423
|
-
fn = self._builtMethods_[name] = tempNameSpace[name]
|
424
|
-
return MethodType(fn, self)
|
425
|
-
except:
|
426
|
-
debug_print("Error building OLE definition for code ", methodCode)
|
427
|
-
traceback.print_exc()
|
428
|
-
return None
|
429
|
-
|
430
|
-
def _Release_(self):
|
431
|
-
"""Cleanup object - like a close - to force cleanup when you don't
|
432
|
-
want to rely on Python's reference counting."""
|
433
|
-
for childCont in self._mapCachedItems_.values():
|
434
|
-
childCont._Release_()
|
435
|
-
self._mapCachedItems_ = {}
|
436
|
-
if self._oleobj_:
|
437
|
-
self._oleobj_.Release()
|
438
|
-
self.__dict__["_oleobj_"] = None
|
439
|
-
if self._olerepr_:
|
440
|
-
self.__dict__["_olerepr_"] = None
|
441
|
-
self._enum_ = None
|
442
|
-
|
443
|
-
def _proc_(self, name, *args):
|
444
|
-
"""Call the named method as a procedure, rather than function.
|
445
|
-
Mainly used by Word.Basic, which whinges about such things."""
|
446
|
-
try:
|
447
|
-
item = self._olerepr_.mapFuncs[name]
|
448
|
-
dispId = item.dispid
|
449
|
-
return self._get_good_object_(
|
450
|
-
self._oleobj_.Invoke(*(dispId, LCID, item.desc[4], 0) + (args))
|
451
|
-
)
|
452
|
-
except KeyError:
|
453
|
-
raise AttributeError(name)
|
454
|
-
|
455
|
-
def _print_details_(self):
|
456
|
-
"Debug routine - dumps what it knows about an object."
|
457
|
-
print("AxDispatch container", self._username_)
|
458
|
-
try:
|
459
|
-
print("Methods:")
|
460
|
-
for method in self._olerepr_.mapFuncs:
|
461
|
-
print("\t", method)
|
462
|
-
print("Props:")
|
463
|
-
for prop, entry in self._olerepr_.propMap.items():
|
464
|
-
print(f"\t{prop} = 0x{entry.dispid:x} - {entry!r}")
|
465
|
-
print("Get Props:")
|
466
|
-
for prop, entry in self._olerepr_.propMapGet.items():
|
467
|
-
print(f"\t{prop} = 0x{entry.dispid:x} - {entry!r}")
|
468
|
-
print("Put Props:")
|
469
|
-
for prop, entry in self._olerepr_.propMapPut.items():
|
470
|
-
print(f"\t{prop} = 0x{entry.dispid:x} - {entry!r}")
|
471
|
-
except:
|
472
|
-
traceback.print_exc()
|
473
|
-
|
474
|
-
def __LazyMap__(self, attr):
|
475
|
-
try:
|
476
|
-
if self._LazyAddAttr_(attr):
|
477
|
-
debug_attr_print(
|
478
|
-
f"{self._username_}.__LazyMap__({attr}) added something"
|
479
|
-
)
|
480
|
-
return 1
|
481
|
-
except AttributeError:
|
482
|
-
return 0
|
483
|
-
|
484
|
-
# Using the typecomp, lazily create a new attribute definition.
|
485
|
-
def _LazyAddAttr_(self, attr):
|
486
|
-
if self._lazydata_ is None:
|
487
|
-
return 0
|
488
|
-
res = 0
|
489
|
-
typeinfo, typecomp = self._lazydata_
|
490
|
-
olerepr = self._olerepr_
|
491
|
-
# We need to explicitly check each invoke type individually - simply
|
492
|
-
# specifying '0' will bind to "any member", which may not be the one
|
493
|
-
# we are actually after (ie, we may be after prop_get, but returned
|
494
|
-
# the info for the prop_put.)
|
495
|
-
for i in ALL_INVOKE_TYPES:
|
496
|
-
try:
|
497
|
-
x, t = typecomp.Bind(attr, i)
|
498
|
-
# Support 'Get' and 'Set' properties - see
|
499
|
-
# bug 1587023
|
500
|
-
if x == 0 and attr[:3] in ("Set", "Get"):
|
501
|
-
x, t = typecomp.Bind(attr[3:], i)
|
502
|
-
if x == pythoncom.DESCKIND_FUNCDESC: # it's a FUNCDESC
|
503
|
-
r = olerepr._AddFunc_(typeinfo, t, 0)
|
504
|
-
elif x == pythoncom.DESCKIND_VARDESC: # it's a VARDESC
|
505
|
-
r = olerepr._AddVar_(typeinfo, t, 0)
|
506
|
-
else: # not found or TYPEDESC/IMPLICITAPP
|
507
|
-
r = None
|
508
|
-
if not r is None:
|
509
|
-
key, map = r[0], r[1]
|
510
|
-
item = map[key]
|
511
|
-
if map == olerepr.propMapPut:
|
512
|
-
olerepr._propMapPutCheck_(key, item)
|
513
|
-
elif map == olerepr.propMapGet:
|
514
|
-
olerepr._propMapGetCheck_(key, item)
|
515
|
-
res = 1
|
516
|
-
except:
|
517
|
-
pass
|
518
|
-
return res
|
519
|
-
|
520
|
-
def _FlagAsMethod(self, *methodNames):
|
521
|
-
"""Flag these attribute names as being methods.
|
522
|
-
Some objects do not correctly differentiate methods and
|
523
|
-
properties, leading to problems when calling these methods.
|
524
|
-
|
525
|
-
Specifically, trying to say: ob.SomeFunc()
|
526
|
-
may yield an exception "None object is not callable"
|
527
|
-
In this case, an attempt to fetch the *property* has worked
|
528
|
-
and returned None, rather than indicating it is really a method.
|
529
|
-
Calling: ob._FlagAsMethod("SomeFunc")
|
530
|
-
should then allow this to work.
|
531
|
-
"""
|
532
|
-
for name in methodNames:
|
533
|
-
details = build.MapEntry(self.__AttrToID__(name), (name,))
|
534
|
-
self._olerepr_.mapFuncs[name] = details
|
535
|
-
|
536
|
-
def __AttrToID__(self, attr):
|
537
|
-
debug_attr_print(
|
538
|
-
"Calling GetIDsOfNames for property {} in Dispatch container {}".format(
|
539
|
-
attr, self._username_
|
540
|
-
)
|
541
|
-
)
|
542
|
-
return self._oleobj_.GetIDsOfNames(0, attr)
|
543
|
-
|
544
|
-
def __getattr__(self, attr):
|
545
|
-
if attr == "__iter__":
|
546
|
-
# We can't handle this as a normal method, as if the attribute
|
547
|
-
# exists, then it must return an iterable object.
|
548
|
-
try:
|
549
|
-
invkind = pythoncom.DISPATCH_METHOD | pythoncom.DISPATCH_PROPERTYGET
|
550
|
-
enum = self._oleobj_.InvokeTypes(
|
551
|
-
pythoncom.DISPID_NEWENUM, LCID, invkind, (13, 10), ()
|
552
|
-
)
|
553
|
-
except pythoncom.com_error:
|
554
|
-
raise AttributeError("This object can not function as an iterator")
|
555
|
-
|
556
|
-
# We must return a callable object.
|
557
|
-
class Factory:
|
558
|
-
def __init__(self, ob):
|
559
|
-
self.ob = ob
|
560
|
-
|
561
|
-
def __call__(self):
|
562
|
-
import win32com.client.util
|
563
|
-
|
564
|
-
return win32com.client.util.Iterator(self.ob)
|
565
|
-
|
566
|
-
return Factory(enum)
|
567
|
-
|
568
|
-
if attr.startswith("_") and attr.endswith("_"): # Fast-track.
|
569
|
-
raise AttributeError(attr)
|
570
|
-
# If a known method, create new instance and return.
|
571
|
-
try:
|
572
|
-
return MethodType(self._builtMethods_[attr], self)
|
573
|
-
except KeyError:
|
574
|
-
pass
|
575
|
-
# XXX - Note that we current are case sensitive in the method.
|
576
|
-
# debug_attr_print("GetAttr called for %s on DispatchContainer %s" % (attr,self._username_))
|
577
|
-
# First check if it is in the method map. Note that an actual method
|
578
|
-
# must not yet exist, (otherwise we would not be here). This
|
579
|
-
# means we create the actual method object - which also means
|
580
|
-
# this code will never be asked for that method name again.
|
581
|
-
if attr in self._olerepr_.mapFuncs:
|
582
|
-
return self._make_method_(attr)
|
583
|
-
|
584
|
-
# Delegate to property maps/cached items
|
585
|
-
retEntry = None
|
586
|
-
if self._olerepr_ and self._oleobj_:
|
587
|
-
# first check general property map, then specific "put" map.
|
588
|
-
retEntry = self._olerepr_.propMap.get(attr)
|
589
|
-
if retEntry is None:
|
590
|
-
retEntry = self._olerepr_.propMapGet.get(attr)
|
591
|
-
# Not found so far - See what COM says.
|
592
|
-
if retEntry is None:
|
593
|
-
try:
|
594
|
-
if self.__LazyMap__(attr):
|
595
|
-
if attr in self._olerepr_.mapFuncs:
|
596
|
-
return self._make_method_(attr)
|
597
|
-
retEntry = self._olerepr_.propMap.get(attr)
|
598
|
-
if retEntry is None:
|
599
|
-
retEntry = self._olerepr_.propMapGet.get(attr)
|
600
|
-
if retEntry is None:
|
601
|
-
retEntry = build.MapEntry(self.__AttrToID__(attr), (attr,))
|
602
|
-
except pythoncom.ole_error:
|
603
|
-
pass # No prop by that name - retEntry remains None.
|
604
|
-
|
605
|
-
if retEntry is not None: # see if in my cache
|
606
|
-
try:
|
607
|
-
ret = self._mapCachedItems_[retEntry.dispid]
|
608
|
-
debug_attr_print("Cached items has attribute!", ret)
|
609
|
-
return ret
|
610
|
-
except (KeyError, AttributeError):
|
611
|
-
debug_attr_print("Attribute %s not in cache" % attr)
|
612
|
-
|
613
|
-
# If we are still here, and have a retEntry, get the OLE item
|
614
|
-
if retEntry is not None:
|
615
|
-
invoke_type = _GetDescInvokeType(retEntry, pythoncom.INVOKE_PROPERTYGET)
|
616
|
-
debug_attr_print(
|
617
|
-
"Getting property Id 0x%x from OLE object" % retEntry.dispid
|
618
|
-
)
|
619
|
-
try:
|
620
|
-
ret = self._oleobj_.Invoke(retEntry.dispid, 0, invoke_type, 1)
|
621
|
-
except pythoncom.com_error as details:
|
622
|
-
if details.hresult in ERRORS_BAD_CONTEXT:
|
623
|
-
# May be a method.
|
624
|
-
self._olerepr_.mapFuncs[attr] = retEntry
|
625
|
-
return self._make_method_(attr)
|
626
|
-
raise
|
627
|
-
debug_attr_print("OLE returned ", ret)
|
628
|
-
return self._get_good_object_(ret)
|
629
|
-
|
630
|
-
# no where else to look.
|
631
|
-
raise AttributeError(f"{self._username_}.{attr}")
|
632
|
-
|
633
|
-
def __setattr__(self, attr, value):
|
634
|
-
if (
|
635
|
-
attr in self.__dict__
|
636
|
-
): # Fast-track - if already in our dict, just make the assignment.
|
637
|
-
# XXX - should maybe check method map - if someone assigns to a method,
|
638
|
-
# it could mean something special (not sure what, tho!)
|
639
|
-
self.__dict__[attr] = value
|
640
|
-
return
|
641
|
-
# Allow property assignment.
|
642
|
-
debug_attr_print(
|
643
|
-
f"SetAttr called for {self._username_}.{attr}={value!r} on DispatchContainer"
|
644
|
-
)
|
645
|
-
|
646
|
-
if self._olerepr_:
|
647
|
-
# Check the "general" property map.
|
648
|
-
if attr in self._olerepr_.propMap:
|
649
|
-
entry = self._olerepr_.propMap[attr]
|
650
|
-
invoke_type = _GetDescInvokeType(entry, pythoncom.INVOKE_PROPERTYPUT)
|
651
|
-
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
|
652
|
-
return
|
653
|
-
# Check the specific "put" map.
|
654
|
-
if attr in self._olerepr_.propMapPut:
|
655
|
-
entry = self._olerepr_.propMapPut[attr]
|
656
|
-
invoke_type = _GetDescInvokeType(entry, pythoncom.INVOKE_PROPERTYPUT)
|
657
|
-
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
|
658
|
-
return
|
659
|
-
|
660
|
-
# Try the OLE Object
|
661
|
-
if self._oleobj_:
|
662
|
-
if self.__LazyMap__(attr):
|
663
|
-
# Check the "general" property map.
|
664
|
-
if attr in self._olerepr_.propMap:
|
665
|
-
entry = self._olerepr_.propMap[attr]
|
666
|
-
invoke_type = _GetDescInvokeType(
|
667
|
-
entry, pythoncom.INVOKE_PROPERTYPUT
|
668
|
-
)
|
669
|
-
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
|
670
|
-
return
|
671
|
-
# Check the specific "put" map.
|
672
|
-
if attr in self._olerepr_.propMapPut:
|
673
|
-
entry = self._olerepr_.propMapPut[attr]
|
674
|
-
invoke_type = _GetDescInvokeType(
|
675
|
-
entry, pythoncom.INVOKE_PROPERTYPUT
|
676
|
-
)
|
677
|
-
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
|
678
|
-
return
|
679
|
-
try:
|
680
|
-
entry = build.MapEntry(self.__AttrToID__(attr), (attr,))
|
681
|
-
except pythoncom.com_error:
|
682
|
-
# No attribute of that name
|
683
|
-
entry = None
|
684
|
-
if entry is not None:
|
685
|
-
try:
|
686
|
-
invoke_type = _GetDescInvokeType(
|
687
|
-
entry, pythoncom.INVOKE_PROPERTYPUT
|
688
|
-
)
|
689
|
-
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
|
690
|
-
self._olerepr_.propMap[attr] = entry
|
691
|
-
debug_attr_print(
|
692
|
-
"__setattr__ property {} (id=0x{:x}) in Dispatch container {}".format(
|
693
|
-
attr, entry.dispid, self._username_
|
694
|
-
)
|
695
|
-
)
|
696
|
-
return
|
697
|
-
except pythoncom.com_error:
|
698
|
-
pass
|
699
|
-
raise AttributeError(f"Property '{self._username_}.{attr}' can not be set.")
|