py2docfx 0.1.15rc2025477__py3-none-any.whl → 0.1.16.dev2052678__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.dev2052678.dist-info}/METADATA +1 -1
- {py2docfx-0.1.15rc2025477.dist-info → py2docfx-0.1.16.dev2052678.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.dev2052678.dist-info}/WHEEL +0 -0
- {py2docfx-0.1.15rc2025477.dist-info → py2docfx-0.1.16.dev2052678.dist-info}/top_level.txt +0 -0
@@ -1,1017 +0,0 @@
|
|
1
|
-
"""Utilities for makegw - Parse a header file to build an interface
|
2
|
-
|
3
|
-
This module contains the core code for parsing a header file describing a
|
4
|
-
COM interface, and building it into an "Interface" structure.
|
5
|
-
|
6
|
-
Each Interface has methods, and each method has arguments.
|
7
|
-
|
8
|
-
Each argument knows how to use Py_BuildValue or Py_ParseTuple to
|
9
|
-
exchange itself with Python.
|
10
|
-
|
11
|
-
See the @win32com.makegw@ module for information in building a COM
|
12
|
-
interface
|
13
|
-
"""
|
14
|
-
|
15
|
-
from __future__ import annotations
|
16
|
-
|
17
|
-
import re
|
18
|
-
import traceback
|
19
|
-
|
20
|
-
|
21
|
-
class error_not_found(Exception):
|
22
|
-
def __init__(self, msg="The requested item could not be found"):
|
23
|
-
super().__init__(msg)
|
24
|
-
|
25
|
-
|
26
|
-
class error_not_supported(Exception):
|
27
|
-
def __init__(self, msg="The required functionality is not supported"):
|
28
|
-
super().__init__(msg)
|
29
|
-
|
30
|
-
|
31
|
-
VERBOSE = 0
|
32
|
-
DEBUG = 0
|
33
|
-
|
34
|
-
## NOTE : For interfaces as params to work correctly, you must
|
35
|
-
## make sure any PythonCOM extensions which expose the interface are loaded
|
36
|
-
## before generating.
|
37
|
-
|
38
|
-
|
39
|
-
class ArgFormatter:
|
40
|
-
"""An instance for a specific type of argument. Knows how to convert itself"""
|
41
|
-
|
42
|
-
def __init__(self, arg, builtinIndirection, declaredIndirection=0):
|
43
|
-
# print("init:", arg.name, builtinIndirection, declaredIndirection, arg.indirectionLevel)
|
44
|
-
self.arg = arg
|
45
|
-
self.builtinIndirection = builtinIndirection
|
46
|
-
self.declaredIndirection = declaredIndirection
|
47
|
-
self.gatewayMode = 0
|
48
|
-
|
49
|
-
def _IndirectPrefix(self, indirectionFrom, indirectionTo):
|
50
|
-
"""Given the indirection level I was declared at (0=Normal, 1=*, 2=**)
|
51
|
-
return a string prefix so I can pass to a function with the
|
52
|
-
required indirection (where the default is the indirection of the method's param.
|
53
|
-
|
54
|
-
eg, assuming my arg has indirection level of 2, if this function was passed 1
|
55
|
-
it would return "&", so that a variable declared with indirection of 1
|
56
|
-
can be prefixed with this to turn it into the indirection level required of 2
|
57
|
-
"""
|
58
|
-
dif = indirectionFrom - indirectionTo
|
59
|
-
if dif == 0:
|
60
|
-
return ""
|
61
|
-
elif dif == -1:
|
62
|
-
return "&"
|
63
|
-
elif dif == 1:
|
64
|
-
return "*"
|
65
|
-
else:
|
66
|
-
return "?? (%d)" % (dif,)
|
67
|
-
raise error_not_supported("Can't indirect this far - please fix me :-)")
|
68
|
-
|
69
|
-
def GetIndirectedArgName(self, indirectFrom, indirectionTo):
|
70
|
-
# print(
|
71
|
-
# "get:",
|
72
|
-
# self.arg.name,
|
73
|
-
# indirectFrom,
|
74
|
-
# self._GetDeclaredIndirection() + self.builtinIndirection,
|
75
|
-
# indirectionTo,
|
76
|
-
# self.arg.indirectionLevel,
|
77
|
-
# )
|
78
|
-
|
79
|
-
if indirectFrom is None:
|
80
|
-
### ACK! this does not account for [in][out] variables.
|
81
|
-
### when this method is called, we need to know which
|
82
|
-
indirectFrom = self._GetDeclaredIndirection() + self.builtinIndirection
|
83
|
-
|
84
|
-
return self._IndirectPrefix(indirectFrom, indirectionTo) + self.arg.name
|
85
|
-
|
86
|
-
def GetBuildValueArg(self):
|
87
|
-
"Get the argument to be passes to Py_BuildValue"
|
88
|
-
return self.arg.name
|
89
|
-
|
90
|
-
def GetParseTupleArg(self):
|
91
|
-
"Get the argument to be passed to PyArg_ParseTuple"
|
92
|
-
if self.gatewayMode:
|
93
|
-
# use whatever they were declared with
|
94
|
-
return self.GetIndirectedArgName(None, 1)
|
95
|
-
# local declarations have just their builtin indirection
|
96
|
-
return self.GetIndirectedArgName(self.builtinIndirection, 1)
|
97
|
-
|
98
|
-
def GetInterfaceCppObjectInfo(self):
|
99
|
-
"""Provide information about the C++ object used.
|
100
|
-
|
101
|
-
Simple variables (such as integers) can declare their type (eg an integer)
|
102
|
-
and use it as the target of both PyArg_ParseTuple and the COM function itself.
|
103
|
-
|
104
|
-
More complex types require a PyObject * declared as the target of PyArg_ParseTuple,
|
105
|
-
then some conversion routine to the C++ object which is actually passed to COM.
|
106
|
-
|
107
|
-
This method provides the name, and optionally the type of that C++ variable.
|
108
|
-
If the type if provided, the caller will likely generate a variable declaration.
|
109
|
-
The name must always be returned.
|
110
|
-
|
111
|
-
Result is a tuple of (variableName, [DeclareType|None|""])
|
112
|
-
"""
|
113
|
-
|
114
|
-
# the first return element is the variable to be passed as
|
115
|
-
# an argument to an interface method. the variable was
|
116
|
-
# declared with only its builtin indirection level. when
|
117
|
-
# we pass it, we'll need to pass in whatever amount of
|
118
|
-
# indirection was applied (plus the builtin amount)
|
119
|
-
# the second return element is the variable declaration; it
|
120
|
-
# should simply be builtin indirection
|
121
|
-
return (
|
122
|
-
self.GetIndirectedArgName(
|
123
|
-
self.builtinIndirection,
|
124
|
-
self.arg.indirectionLevel + self.builtinIndirection,
|
125
|
-
),
|
126
|
-
f"{self.GetUnconstType()} {self.arg.name}",
|
127
|
-
)
|
128
|
-
|
129
|
-
def GetInterfaceArgCleanup(self):
|
130
|
-
"Return cleanup code for C++ args passed to the interface method."
|
131
|
-
if DEBUG:
|
132
|
-
return "/* GetInterfaceArgCleanup output goes here: %s */\n" % self.arg.name
|
133
|
-
else:
|
134
|
-
return ""
|
135
|
-
|
136
|
-
def GetInterfaceArgCleanupGIL(self):
|
137
|
-
"""Return cleanup code for C++ args passed to the interface
|
138
|
-
method that must be executed with the GIL held"""
|
139
|
-
if DEBUG:
|
140
|
-
return (
|
141
|
-
"/* GetInterfaceArgCleanup (GIL held) output goes here: %s */\n"
|
142
|
-
% self.arg.name
|
143
|
-
)
|
144
|
-
else:
|
145
|
-
return ""
|
146
|
-
|
147
|
-
def GetUnconstType(self):
|
148
|
-
return self.arg.unc_type
|
149
|
-
|
150
|
-
def SetGatewayMode(self):
|
151
|
-
self.gatewayMode = 1
|
152
|
-
|
153
|
-
def _GetDeclaredIndirection(self):
|
154
|
-
return self.arg.indirectionLevel
|
155
|
-
print("declared:", self.arg.name, self.gatewayMode)
|
156
|
-
if self.gatewayMode:
|
157
|
-
return self.arg.indirectionLevel
|
158
|
-
else:
|
159
|
-
return self.declaredIndirection
|
160
|
-
|
161
|
-
def DeclareParseArgTupleInputConverter(self):
|
162
|
-
"Declare the variable used as the PyArg_ParseTuple param for a gateway"
|
163
|
-
# Only declare it??
|
164
|
-
# if self.arg.indirectionLevel==0:
|
165
|
-
# return "\t%s %s;\n" % (self.arg.type, self.arg.name)
|
166
|
-
# else:
|
167
|
-
if DEBUG:
|
168
|
-
return (
|
169
|
-
"/* Declare ParseArgTupleInputConverter goes here: %s */\n"
|
170
|
-
% self.arg.name
|
171
|
-
)
|
172
|
-
else:
|
173
|
-
return ""
|
174
|
-
|
175
|
-
def GetParsePostCode(self):
|
176
|
-
"Get a string of C++ code to be executed after (ie, to finalise) the PyArg_ParseTuple conversion"
|
177
|
-
if DEBUG:
|
178
|
-
return "/* GetParsePostCode code goes here: %s */\n" % self.arg.name
|
179
|
-
else:
|
180
|
-
return ""
|
181
|
-
|
182
|
-
def GetBuildForInterfacePreCode(self):
|
183
|
-
"Get a string of C++ code to be executed before (ie, to initialise) the Py_BuildValue conversion for Interfaces"
|
184
|
-
if DEBUG:
|
185
|
-
return "/* GetBuildForInterfacePreCode goes here: %s */\n" % self.arg.name
|
186
|
-
else:
|
187
|
-
return ""
|
188
|
-
|
189
|
-
def GetBuildForGatewayPreCode(self):
|
190
|
-
"Get a string of C++ code to be executed before (ie, to initialise) the Py_BuildValue conversion for Gateways"
|
191
|
-
s = self.GetBuildForInterfacePreCode() # Usually the same
|
192
|
-
if DEBUG:
|
193
|
-
if s[:4] == "/* G":
|
194
|
-
s = "/* GetBuildForGatewayPreCode goes here: %s */\n" % self.arg.name
|
195
|
-
return s
|
196
|
-
|
197
|
-
def GetBuildForInterfacePostCode(self):
|
198
|
-
"Get a string of C++ code to be executed after (ie, to finalise) the Py_BuildValue conversion for Interfaces"
|
199
|
-
if DEBUG:
|
200
|
-
return "/* GetBuildForInterfacePostCode goes here: %s */\n" % self.arg.name
|
201
|
-
return ""
|
202
|
-
|
203
|
-
def GetBuildForGatewayPostCode(self):
|
204
|
-
"Get a string of C++ code to be executed after (ie, to finalise) the Py_BuildValue conversion for Gateways"
|
205
|
-
s = self.GetBuildForInterfacePostCode() # Usually the same
|
206
|
-
if DEBUG:
|
207
|
-
if s[:4] == "/* G":
|
208
|
-
s = "/* GetBuildForGatewayPostCode goes here: %s */\n" % self.arg.name
|
209
|
-
return s
|
210
|
-
|
211
|
-
def GetAutoduckString(self):
|
212
|
-
return "// @pyparm {}|{}||Description for {}".format(
|
213
|
-
self._GetPythonTypeDesc(),
|
214
|
-
self.arg.name,
|
215
|
-
self.arg.name,
|
216
|
-
)
|
217
|
-
|
218
|
-
def _GetPythonTypeDesc(self):
|
219
|
-
"Returns a string with the description of the type. Used for doco purposes"
|
220
|
-
return None
|
221
|
-
|
222
|
-
def NeedUSES_CONVERSION(self):
|
223
|
-
"Determines if this arg forces a USES_CONVERSION macro"
|
224
|
-
return 0
|
225
|
-
|
226
|
-
|
227
|
-
# Special formatter for floats since they're smaller than Python floats.
|
228
|
-
class ArgFormatterFloat(ArgFormatter):
|
229
|
-
def GetFormatChar(self):
|
230
|
-
return "f"
|
231
|
-
|
232
|
-
def DeclareParseArgTupleInputConverter(self):
|
233
|
-
# Declare a double variable
|
234
|
-
return "\tdouble dbl%s;\n" % self.arg.name
|
235
|
-
|
236
|
-
def GetParseTupleArg(self):
|
237
|
-
return "&dbl" + self.arg.name
|
238
|
-
|
239
|
-
def _GetPythonTypeDesc(self):
|
240
|
-
return "float"
|
241
|
-
|
242
|
-
def GetBuildValueArg(self):
|
243
|
-
return "&dbl" + self.arg.name
|
244
|
-
|
245
|
-
def GetBuildForInterfacePreCode(self):
|
246
|
-
return "\tdbl" + self.arg.name + " = " + self.arg.name + ";\n"
|
247
|
-
|
248
|
-
def GetBuildForGatewayPreCode(self):
|
249
|
-
return (
|
250
|
-
"\tdbl%s = " % self.arg.name
|
251
|
-
+ self._IndirectPrefix(self._GetDeclaredIndirection(), 0)
|
252
|
-
+ self.arg.name
|
253
|
-
+ ";\n"
|
254
|
-
)
|
255
|
-
|
256
|
-
def GetParsePostCode(self):
|
257
|
-
s = "\t"
|
258
|
-
if self.gatewayMode:
|
259
|
-
s += self._IndirectPrefix(self._GetDeclaredIndirection(), 0)
|
260
|
-
s += self.arg.name
|
261
|
-
s += " = (float)dbl%s;\n" % self.arg.name
|
262
|
-
return s
|
263
|
-
|
264
|
-
|
265
|
-
# Special formatter for Shorts because they're
|
266
|
-
# a different size than Python ints!
|
267
|
-
class ArgFormatterShort(ArgFormatter):
|
268
|
-
def GetFormatChar(self):
|
269
|
-
return "i"
|
270
|
-
|
271
|
-
def DeclareParseArgTupleInputConverter(self):
|
272
|
-
# Declare a double variable
|
273
|
-
return "\tINT i%s;\n" % self.arg.name
|
274
|
-
|
275
|
-
def GetParseTupleArg(self):
|
276
|
-
return "&i" + self.arg.name
|
277
|
-
|
278
|
-
def _GetPythonTypeDesc(self):
|
279
|
-
return "int"
|
280
|
-
|
281
|
-
def GetBuildValueArg(self):
|
282
|
-
return "&i" + self.arg.name
|
283
|
-
|
284
|
-
def GetBuildForInterfacePreCode(self):
|
285
|
-
return "\ti" + self.arg.name + " = " + self.arg.name + ";\n"
|
286
|
-
|
287
|
-
def GetBuildForGatewayPreCode(self):
|
288
|
-
return (
|
289
|
-
"\ti%s = " % self.arg.name
|
290
|
-
+ self._IndirectPrefix(self._GetDeclaredIndirection(), 0)
|
291
|
-
+ self.arg.name
|
292
|
-
+ ";\n"
|
293
|
-
)
|
294
|
-
|
295
|
-
def GetParsePostCode(self):
|
296
|
-
s = "\t"
|
297
|
-
if self.gatewayMode:
|
298
|
-
s += self._IndirectPrefix(self._GetDeclaredIndirection(), 0)
|
299
|
-
s += self.arg.name
|
300
|
-
s += " = i%s;\n" % self.arg.name
|
301
|
-
return s
|
302
|
-
|
303
|
-
|
304
|
-
# for types which are 64bits on AMD64 - eg, HWND
|
305
|
-
class ArgFormatterLONG_PTR(ArgFormatter):
|
306
|
-
def GetFormatChar(self):
|
307
|
-
return "O"
|
308
|
-
|
309
|
-
def DeclareParseArgTupleInputConverter(self):
|
310
|
-
# Declare a PyObject variable
|
311
|
-
return "\tPyObject *ob%s;\n" % self.arg.name
|
312
|
-
|
313
|
-
def GetParseTupleArg(self):
|
314
|
-
return "&ob" + self.arg.name
|
315
|
-
|
316
|
-
def _GetPythonTypeDesc(self):
|
317
|
-
return "int/long"
|
318
|
-
|
319
|
-
def GetBuildValueArg(self):
|
320
|
-
return "ob" + self.arg.name
|
321
|
-
|
322
|
-
def GetBuildForInterfacePostCode(self):
|
323
|
-
return "\tPy_XDECREF(ob%s);\n" % self.arg.name
|
324
|
-
|
325
|
-
def GetParsePostCode(self):
|
326
|
-
return "\tif (bPythonIsHappy && !PyWinLong_AsULONG_PTR(ob{}, (ULONG_PTR *){})) bPythonIsHappy = FALSE;\n".format(
|
327
|
-
self.arg.name, self.GetIndirectedArgName(None, 2)
|
328
|
-
)
|
329
|
-
|
330
|
-
def GetBuildForInterfacePreCode(self):
|
331
|
-
notdirected = self.GetIndirectedArgName(None, 1)
|
332
|
-
return f"\tob{self.arg.name} = PyWinObject_FromULONG_PTR({notdirected});\n"
|
333
|
-
|
334
|
-
def GetBuildForGatewayPostCode(self):
|
335
|
-
return "\tPy_XDECREF(ob%s);\n" % self.arg.name
|
336
|
-
|
337
|
-
|
338
|
-
class ArgFormatterPythonCOM(ArgFormatter):
|
339
|
-
"""An arg formatter for types exposed in the PythonCOM module"""
|
340
|
-
|
341
|
-
def GetFormatChar(self):
|
342
|
-
return "O"
|
343
|
-
|
344
|
-
# def GetInterfaceCppObjectInfo(self):
|
345
|
-
# return ArgFormatter.GetInterfaceCppObjectInfo(self)[0], \
|
346
|
-
# "%s %s%s" % (self.arg.unc_type, "*" * self._GetDeclaredIndirection(), self.arg.name)
|
347
|
-
def DeclareParseArgTupleInputConverter(self):
|
348
|
-
# Declare a PyObject variable
|
349
|
-
return "\tPyObject *ob%s;\n" % self.arg.name
|
350
|
-
|
351
|
-
def GetParseTupleArg(self):
|
352
|
-
return "&ob" + self.arg.name
|
353
|
-
|
354
|
-
def _GetPythonTypeDesc(self):
|
355
|
-
return "<o Py%s>" % self.arg.type
|
356
|
-
|
357
|
-
def GetBuildValueArg(self):
|
358
|
-
return "ob" + self.arg.name
|
359
|
-
|
360
|
-
def GetBuildForInterfacePostCode(self):
|
361
|
-
return "\tPy_XDECREF(ob%s);\n" % self.arg.name
|
362
|
-
|
363
|
-
|
364
|
-
class ArgFormatterBSTR(ArgFormatterPythonCOM):
|
365
|
-
def _GetPythonTypeDesc(self):
|
366
|
-
return "<o unicode>"
|
367
|
-
|
368
|
-
def GetParsePostCode(self):
|
369
|
-
return "\tif (bPythonIsHappy && !PyWinObject_AsBstr(ob{}, {})) bPythonIsHappy = FALSE;\n".format(
|
370
|
-
self.arg.name, self.GetIndirectedArgName(None, 2)
|
371
|
-
)
|
372
|
-
|
373
|
-
def GetBuildForInterfacePreCode(self):
|
374
|
-
notdirected = self.GetIndirectedArgName(None, 1)
|
375
|
-
return f"\tob{self.arg.name} = MakeBstrToObj({notdirected});\n"
|
376
|
-
|
377
|
-
def GetBuildForInterfacePostCode(self):
|
378
|
-
return (
|
379
|
-
f"\tSysFreeString({self.arg.name});\n"
|
380
|
-
+ ArgFormatterPythonCOM.GetBuildForInterfacePostCode(self)
|
381
|
-
)
|
382
|
-
|
383
|
-
def GetBuildForGatewayPostCode(self):
|
384
|
-
return "\tPy_XDECREF(ob%s);\n" % self.arg.name
|
385
|
-
|
386
|
-
|
387
|
-
class ArgFormatterOLECHAR(ArgFormatterPythonCOM):
|
388
|
-
def _GetPythonTypeDesc(self):
|
389
|
-
return "<o unicode>"
|
390
|
-
|
391
|
-
def GetUnconstType(self):
|
392
|
-
if self.arg.type[:3] == "LPC":
|
393
|
-
return self.arg.type[:2] + self.arg.type[3:]
|
394
|
-
else:
|
395
|
-
return self.arg.unc_type
|
396
|
-
|
397
|
-
def GetParsePostCode(self):
|
398
|
-
return "\tif (bPythonIsHappy && !PyWinObject_AsBstr(ob{}, {})) bPythonIsHappy = FALSE;\n".format(
|
399
|
-
self.arg.name, self.GetIndirectedArgName(None, 2)
|
400
|
-
)
|
401
|
-
|
402
|
-
def GetInterfaceArgCleanup(self):
|
403
|
-
return "\tSysFreeString(%s);\n" % self.GetIndirectedArgName(None, 1)
|
404
|
-
|
405
|
-
def GetBuildForInterfacePreCode(self):
|
406
|
-
# the variable was declared with just its builtin indirection
|
407
|
-
notdirected = self.GetIndirectedArgName(self.builtinIndirection, 1)
|
408
|
-
return f"\tob{self.arg.name} = MakeOLECHARToObj({notdirected});\n"
|
409
|
-
|
410
|
-
def GetBuildForInterfacePostCode(self):
|
411
|
-
# memory returned into an OLECHAR should be freed
|
412
|
-
return (
|
413
|
-
f"\tCoTaskMemFree({self.arg.name});\n"
|
414
|
-
+ ArgFormatterPythonCOM.GetBuildForInterfacePostCode(self)
|
415
|
-
)
|
416
|
-
|
417
|
-
def GetBuildForGatewayPostCode(self):
|
418
|
-
return "\tPy_XDECREF(ob%s);\n" % self.arg.name
|
419
|
-
|
420
|
-
|
421
|
-
class ArgFormatterTCHAR(ArgFormatterPythonCOM):
|
422
|
-
def _GetPythonTypeDesc(self):
|
423
|
-
return "string/<o unicode>"
|
424
|
-
|
425
|
-
def GetUnconstType(self):
|
426
|
-
if self.arg.type[:3] == "LPC":
|
427
|
-
return self.arg.type[:2] + self.arg.type[3:]
|
428
|
-
else:
|
429
|
-
return self.arg.unc_type
|
430
|
-
|
431
|
-
def GetParsePostCode(self):
|
432
|
-
return "\tif (bPythonIsHappy && !PyWinObject_AsTCHAR(ob{}, {})) bPythonIsHappy = FALSE;\n".format(
|
433
|
-
self.arg.name, self.GetIndirectedArgName(None, 2)
|
434
|
-
)
|
435
|
-
|
436
|
-
def GetInterfaceArgCleanup(self):
|
437
|
-
return "\tPyWinObject_FreeTCHAR(%s);\n" % self.GetIndirectedArgName(None, 1)
|
438
|
-
|
439
|
-
def GetBuildForInterfacePreCode(self):
|
440
|
-
# the variable was declared with just its builtin indirection
|
441
|
-
notdirected = self.GetIndirectedArgName(self.builtinIndirection, 1)
|
442
|
-
return f"\tob{self.arg.name} = PyWinObject_FromTCHAR({notdirected});\n"
|
443
|
-
|
444
|
-
def GetBuildForInterfacePostCode(self):
|
445
|
-
return "// ??? - TCHAR post code\n"
|
446
|
-
|
447
|
-
def GetBuildForGatewayPostCode(self):
|
448
|
-
return "\tPy_XDECREF(ob%s);\n" % self.arg.name
|
449
|
-
|
450
|
-
|
451
|
-
class ArgFormatterIID(ArgFormatterPythonCOM):
|
452
|
-
def _GetPythonTypeDesc(self):
|
453
|
-
return "<o PyIID>"
|
454
|
-
|
455
|
-
def GetParsePostCode(self):
|
456
|
-
return "\tif (!PyWinObject_AsIID(ob{}, &{})) bPythonIsHappy = FALSE;\n".format(
|
457
|
-
self.arg.name,
|
458
|
-
self.arg.name,
|
459
|
-
)
|
460
|
-
|
461
|
-
def GetBuildForInterfacePreCode(self):
|
462
|
-
# notdirected = self.GetIndirectedArgName(self.arg.indirectionLevel, 0)
|
463
|
-
notdirected = self.GetIndirectedArgName(None, 0)
|
464
|
-
return f"\tob{self.arg.name} = PyWinObject_FromIID({notdirected});\n"
|
465
|
-
|
466
|
-
def GetInterfaceCppObjectInfo(self):
|
467
|
-
return self.arg.name, "IID %s" % (self.arg.name)
|
468
|
-
|
469
|
-
|
470
|
-
class ArgFormatterTime(ArgFormatterPythonCOM):
|
471
|
-
def __init__(self, arg, builtinIndirection, declaredIndirection=0):
|
472
|
-
# we don't want to declare LPSYSTEMTIME / LPFILETIME objects
|
473
|
-
if arg.indirectionLevel == 0 and arg.unc_type[:2] == "LP":
|
474
|
-
arg.unc_type = arg.unc_type[2:]
|
475
|
-
# reduce the builtin and increment the declaration
|
476
|
-
arg.indirectionLevel += 1
|
477
|
-
builtinIndirection = 0
|
478
|
-
ArgFormatterPythonCOM.__init__(
|
479
|
-
self, arg, builtinIndirection, declaredIndirection
|
480
|
-
)
|
481
|
-
|
482
|
-
def _GetPythonTypeDesc(self):
|
483
|
-
return "<o PyDateTime>"
|
484
|
-
|
485
|
-
def GetParsePostCode(self):
|
486
|
-
# variable was declared with only the builtinIndirection
|
487
|
-
### NOTE: this is an [in] ... so use only builtin
|
488
|
-
return '\tif (!PyTime_Check(ob{})) {{\n\t\tPyErr_SetString(PyExc_TypeError, "The argument must be a PyTime object");\n\t\tbPythonIsHappy = FALSE;\n\t}}\n\tif (!((PyTime *)ob{})->GetTime({})) bPythonIsHappy = FALSE;\n'.format(
|
489
|
-
self.arg.name,
|
490
|
-
self.arg.name,
|
491
|
-
self.GetIndirectedArgName(self.builtinIndirection, 1),
|
492
|
-
)
|
493
|
-
|
494
|
-
def GetBuildForInterfacePreCode(self):
|
495
|
-
### use just the builtinIndirection again...
|
496
|
-
notdirected = self.GetIndirectedArgName(self.builtinIndirection, 0)
|
497
|
-
return f"\tob{self.arg.name} = new PyTime({notdirected});\n"
|
498
|
-
|
499
|
-
def GetBuildForInterfacePostCode(self):
|
500
|
-
### hack to determine if we need to free stuff
|
501
|
-
ret = ""
|
502
|
-
if self.builtinIndirection + self.arg.indirectionLevel > 1:
|
503
|
-
# memory returned into an OLECHAR should be freed
|
504
|
-
ret = "\tCoTaskMemFree(%s);\n" % self.arg.name
|
505
|
-
return ret + ArgFormatterPythonCOM.GetBuildForInterfacePostCode(self)
|
506
|
-
|
507
|
-
|
508
|
-
class ArgFormatterSTATSTG(ArgFormatterPythonCOM):
|
509
|
-
def _GetPythonTypeDesc(self):
|
510
|
-
return "<o STATSTG>"
|
511
|
-
|
512
|
-
def GetParsePostCode(self):
|
513
|
-
return "\tif (!PyCom_PyObjectAsSTATSTG(ob{}, {}, 0/*flags*/)) bPythonIsHappy = FALSE;\n".format(
|
514
|
-
self.arg.name, self.GetIndirectedArgName(None, 1)
|
515
|
-
)
|
516
|
-
|
517
|
-
def GetBuildForInterfacePreCode(self):
|
518
|
-
notdirected = self.GetIndirectedArgName(None, 1)
|
519
|
-
return "\tob{} = PyCom_PyObjectFromSTATSTG({});\n\t// STATSTG doco says our responsibility to free\n\tif (({}).pwcsName) CoTaskMemFree(({}).pwcsName);\n".format(
|
520
|
-
self.arg.name,
|
521
|
-
self.GetIndirectedArgName(None, 1),
|
522
|
-
notdirected,
|
523
|
-
notdirected,
|
524
|
-
)
|
525
|
-
|
526
|
-
|
527
|
-
class ArgFormatterGeneric(ArgFormatterPythonCOM):
|
528
|
-
def _GetPythonTypeDesc(self):
|
529
|
-
return "<o %s>" % self.arg.type
|
530
|
-
|
531
|
-
def GetParsePostCode(self):
|
532
|
-
return "\tif (!PyObject_As{}(ob{}, &{}) bPythonIsHappy = FALSE;\n".format(
|
533
|
-
self.arg.type,
|
534
|
-
self.arg.name,
|
535
|
-
self.GetIndirectedArgName(None, 1),
|
536
|
-
)
|
537
|
-
|
538
|
-
def GetInterfaceArgCleanup(self):
|
539
|
-
return f"\tPyObject_Free{self.arg.type}({self.arg.name});\n"
|
540
|
-
|
541
|
-
def GetBuildForInterfacePreCode(self):
|
542
|
-
notdirected = self.GetIndirectedArgName(None, 1)
|
543
|
-
return "\tob{} = PyObject_From{}({});\n".format(
|
544
|
-
self.arg.name,
|
545
|
-
self.arg.type,
|
546
|
-
self.GetIndirectedArgName(None, 1),
|
547
|
-
)
|
548
|
-
|
549
|
-
|
550
|
-
class ArgFormatterIDLIST(ArgFormatterPythonCOM):
|
551
|
-
def _GetPythonTypeDesc(self):
|
552
|
-
return "<o PyIDL>"
|
553
|
-
|
554
|
-
def GetParsePostCode(self):
|
555
|
-
return "\tif (bPythonIsHappy && !PyObject_AsPIDL(ob{}, &{})) bPythonIsHappy = FALSE;\n".format(
|
556
|
-
self.arg.name, self.GetIndirectedArgName(None, 1)
|
557
|
-
)
|
558
|
-
|
559
|
-
def GetInterfaceArgCleanup(self):
|
560
|
-
return f"\tPyObject_FreePIDL({self.arg.name});\n"
|
561
|
-
|
562
|
-
def GetBuildForInterfacePreCode(self):
|
563
|
-
notdirected = self.GetIndirectedArgName(None, 1)
|
564
|
-
return "\tob{} = PyObject_FromPIDL({});\n".format(
|
565
|
-
self.arg.name,
|
566
|
-
self.GetIndirectedArgName(None, 1),
|
567
|
-
)
|
568
|
-
|
569
|
-
|
570
|
-
class ArgFormatterHANDLE(ArgFormatterPythonCOM):
|
571
|
-
def _GetPythonTypeDesc(self):
|
572
|
-
return "<o PyHANDLE>"
|
573
|
-
|
574
|
-
def GetParsePostCode(self):
|
575
|
-
return "\tif (!PyWinObject_AsHANDLE(ob{}, &{}, FALSE) bPythonIsHappy = FALSE;\n".format(
|
576
|
-
self.arg.name, self.GetIndirectedArgName(None, 1)
|
577
|
-
)
|
578
|
-
|
579
|
-
def GetBuildForInterfacePreCode(self):
|
580
|
-
notdirected = self.GetIndirectedArgName(None, 1)
|
581
|
-
return "\tob{} = PyWinObject_FromHANDLE({});\n".format(
|
582
|
-
self.arg.name,
|
583
|
-
self.GetIndirectedArgName(None, 0),
|
584
|
-
)
|
585
|
-
|
586
|
-
|
587
|
-
class ArgFormatterLARGE_INTEGER(ArgFormatterPythonCOM):
|
588
|
-
def GetKeyName(self):
|
589
|
-
return "LARGE_INTEGER"
|
590
|
-
|
591
|
-
def _GetPythonTypeDesc(self):
|
592
|
-
return "<o %s>" % self.GetKeyName()
|
593
|
-
|
594
|
-
def GetParsePostCode(self):
|
595
|
-
return "\tif (!PyWinObject_As{}(ob{}, {})) bPythonIsHappy = FALSE;\n".format(
|
596
|
-
self.GetKeyName(),
|
597
|
-
self.arg.name,
|
598
|
-
self.GetIndirectedArgName(None, 1),
|
599
|
-
)
|
600
|
-
|
601
|
-
def GetBuildForInterfacePreCode(self):
|
602
|
-
notdirected = self.GetIndirectedArgName(None, 0)
|
603
|
-
return "\tob{} = PyWinObject_From{}({});\n".format(
|
604
|
-
self.arg.name,
|
605
|
-
self.GetKeyName(),
|
606
|
-
notdirected,
|
607
|
-
)
|
608
|
-
|
609
|
-
|
610
|
-
class ArgFormatterULARGE_INTEGER(ArgFormatterLARGE_INTEGER):
|
611
|
-
def GetKeyName(self):
|
612
|
-
return "ULARGE_INTEGER"
|
613
|
-
|
614
|
-
|
615
|
-
class ArgFormatterInterface(ArgFormatterPythonCOM):
|
616
|
-
def GetInterfaceCppObjectInfo(self):
|
617
|
-
return self.GetIndirectedArgName(
|
618
|
-
1, self.arg.indirectionLevel
|
619
|
-
), "{} * {}".format(
|
620
|
-
self.GetUnconstType(),
|
621
|
-
self.arg.name,
|
622
|
-
)
|
623
|
-
|
624
|
-
def GetParsePostCode(self):
|
625
|
-
# This gets called for out params in gateway mode
|
626
|
-
if self.gatewayMode:
|
627
|
-
sArg = self.GetIndirectedArgName(None, 2)
|
628
|
-
else:
|
629
|
-
# vs. in params for interface mode.
|
630
|
-
sArg = self.GetIndirectedArgName(1, 2)
|
631
|
-
return "\tif (bPythonIsHappy && !PyCom_InterfaceFromPyInstanceOrObject(ob{}, IID_{}, (void **){}, TRUE /* bNoneOK */))\n\t\t bPythonIsHappy = FALSE;\n".format(
|
632
|
-
self.arg.name, self.arg.type, sArg
|
633
|
-
)
|
634
|
-
|
635
|
-
def GetBuildForInterfacePreCode(self):
|
636
|
-
return "\tob{} = PyCom_PyObjectFromIUnknown({}, IID_{}, FALSE);\n".format(
|
637
|
-
self.arg.name,
|
638
|
-
self.arg.name,
|
639
|
-
self.arg.type,
|
640
|
-
)
|
641
|
-
|
642
|
-
def GetBuildForGatewayPreCode(self):
|
643
|
-
sPrefix = self._IndirectPrefix(self._GetDeclaredIndirection(), 1)
|
644
|
-
return "\tob{} = PyCom_PyObjectFromIUnknown({}{}, IID_{}, TRUE);\n".format(
|
645
|
-
self.arg.name,
|
646
|
-
sPrefix,
|
647
|
-
self.arg.name,
|
648
|
-
self.arg.type,
|
649
|
-
)
|
650
|
-
|
651
|
-
def GetInterfaceArgCleanup(self):
|
652
|
-
return f"\tif ({self.arg.name}) {self.arg.name}->Release();\n"
|
653
|
-
|
654
|
-
|
655
|
-
class ArgFormatterVARIANT(ArgFormatterPythonCOM):
|
656
|
-
def GetParsePostCode(self):
|
657
|
-
return "\tif ( !PyCom_VariantFromPyObject(ob{}, {}) )\n\t\tbPythonIsHappy = FALSE;\n".format(
|
658
|
-
self.arg.name, self.GetIndirectedArgName(None, 1)
|
659
|
-
)
|
660
|
-
|
661
|
-
def GetBuildForGatewayPreCode(self):
|
662
|
-
notdirected = self.GetIndirectedArgName(None, 1)
|
663
|
-
return f"\tob{self.arg.name} = PyCom_PyObjectFromVariant({notdirected});\n"
|
664
|
-
|
665
|
-
def GetBuildForGatewayPostCode(self):
|
666
|
-
return "\tPy_XDECREF(ob%s);\n" % self.arg.name
|
667
|
-
|
668
|
-
# Key : , Python Type Description, ParseTuple format char
|
669
|
-
|
670
|
-
|
671
|
-
ConvertSimpleTypes = {
|
672
|
-
"BOOL": ("BOOL", "int", "i"),
|
673
|
-
"UINT": ("UINT", "int", "i"),
|
674
|
-
"BYTE": ("BYTE", "int", "i"),
|
675
|
-
"INT": ("INT", "int", "i"),
|
676
|
-
"DWORD": ("DWORD", "int", "l"),
|
677
|
-
"HRESULT": ("HRESULT", "int", "l"),
|
678
|
-
"ULONG": ("ULONG", "int", "l"),
|
679
|
-
"LONG": ("LONG", "int", "l"),
|
680
|
-
"int": ("int", "int", "i"),
|
681
|
-
"long": ("long", "int", "l"),
|
682
|
-
"DISPID": ("DISPID", "long", "l"),
|
683
|
-
"APPBREAKFLAGS": ("int", "int", "i"),
|
684
|
-
"BREAKRESUMEACTION": ("int", "int", "i"),
|
685
|
-
"ERRORRESUMEACTION": ("int", "int", "i"),
|
686
|
-
"BREAKREASON": ("int", "int", "i"),
|
687
|
-
"BREAKPOINT_STATE": ("int", "int", "i"),
|
688
|
-
"BREAKRESUME_ACTION": ("int", "int", "i"),
|
689
|
-
"SOURCE_TEXT_ATTR": ("int", "int", "i"),
|
690
|
-
"TEXT_DOC_ATTR": ("int", "int", "i"),
|
691
|
-
"QUERYOPTION": ("int", "int", "i"),
|
692
|
-
"PARSEACTION": ("int", "int", "i"),
|
693
|
-
}
|
694
|
-
|
695
|
-
|
696
|
-
class ArgFormatterSimple(ArgFormatter):
|
697
|
-
"""An arg formatter for simple integer etc types"""
|
698
|
-
|
699
|
-
def GetFormatChar(self):
|
700
|
-
return ConvertSimpleTypes[self.arg.type][2]
|
701
|
-
|
702
|
-
def _GetPythonTypeDesc(self):
|
703
|
-
return ConvertSimpleTypes[self.arg.type][1]
|
704
|
-
|
705
|
-
|
706
|
-
AllConverters: dict[
|
707
|
-
str, tuple[type[ArgFormatter], int, int] | tuple[type[ArgFormatter], int]
|
708
|
-
] = {
|
709
|
-
"const OLECHAR": (ArgFormatterOLECHAR, 0, 1),
|
710
|
-
"WCHAR": (ArgFormatterOLECHAR, 0, 1),
|
711
|
-
"OLECHAR": (ArgFormatterOLECHAR, 0, 1),
|
712
|
-
"LPCOLESTR": (ArgFormatterOLECHAR, 1, 1),
|
713
|
-
"LPOLESTR": (ArgFormatterOLECHAR, 1, 1),
|
714
|
-
"LPCWSTR": (ArgFormatterOLECHAR, 1, 1),
|
715
|
-
"LPWSTR": (ArgFormatterOLECHAR, 1, 1),
|
716
|
-
"LPCSTR": (ArgFormatterOLECHAR, 1, 1),
|
717
|
-
"LPTSTR": (ArgFormatterTCHAR, 1, 1),
|
718
|
-
"LPCTSTR": (ArgFormatterTCHAR, 1, 1),
|
719
|
-
"HANDLE": (ArgFormatterHANDLE, 0),
|
720
|
-
"BSTR": (ArgFormatterBSTR, 1, 0),
|
721
|
-
"const IID": (ArgFormatterIID, 0),
|
722
|
-
"CLSID": (ArgFormatterIID, 0),
|
723
|
-
"IID": (ArgFormatterIID, 0),
|
724
|
-
"GUID": (ArgFormatterIID, 0),
|
725
|
-
"const GUID": (ArgFormatterIID, 0),
|
726
|
-
"const IID": (ArgFormatterIID, 0),
|
727
|
-
"REFCLSID": (ArgFormatterIID, 0),
|
728
|
-
"REFIID": (ArgFormatterIID, 0),
|
729
|
-
"REFGUID": (ArgFormatterIID, 0),
|
730
|
-
"const FILETIME": (ArgFormatterTime, 0),
|
731
|
-
"const SYSTEMTIME": (ArgFormatterTime, 0),
|
732
|
-
"const LPSYSTEMTIME": (ArgFormatterTime, 1, 1),
|
733
|
-
"LPSYSTEMTIME": (ArgFormatterTime, 1, 1),
|
734
|
-
"FILETIME": (ArgFormatterTime, 0),
|
735
|
-
"SYSTEMTIME": (ArgFormatterTime, 0),
|
736
|
-
"STATSTG": (ArgFormatterSTATSTG, 0),
|
737
|
-
"LARGE_INTEGER": (ArgFormatterLARGE_INTEGER, 0),
|
738
|
-
"ULARGE_INTEGER": (ArgFormatterULARGE_INTEGER, 0),
|
739
|
-
"VARIANT": (ArgFormatterVARIANT, 0),
|
740
|
-
"float": (ArgFormatterFloat, 0),
|
741
|
-
"single": (ArgFormatterFloat, 0),
|
742
|
-
"short": (ArgFormatterShort, 0),
|
743
|
-
"WORD": (ArgFormatterShort, 0),
|
744
|
-
"VARIANT_BOOL": (ArgFormatterShort, 0),
|
745
|
-
"HWND": (ArgFormatterLONG_PTR, 1),
|
746
|
-
"HMENU": (ArgFormatterLONG_PTR, 1),
|
747
|
-
"HOLEMENU": (ArgFormatterLONG_PTR, 1),
|
748
|
-
"HICON": (ArgFormatterLONG_PTR, 1),
|
749
|
-
"HDC": (ArgFormatterLONG_PTR, 1),
|
750
|
-
"LPARAM": (ArgFormatterLONG_PTR, 1),
|
751
|
-
"WPARAM": (ArgFormatterLONG_PTR, 1),
|
752
|
-
"LRESULT": (ArgFormatterLONG_PTR, 1),
|
753
|
-
"UINT": (ArgFormatterShort, 0),
|
754
|
-
"SVSIF": (ArgFormatterShort, 0),
|
755
|
-
"Control": (ArgFormatterInterface, 0, 1),
|
756
|
-
"DataObject": (ArgFormatterInterface, 0, 1),
|
757
|
-
"_PropertyBag": (ArgFormatterInterface, 0, 1),
|
758
|
-
"AsyncProp": (ArgFormatterInterface, 0, 1),
|
759
|
-
"DataSource": (ArgFormatterInterface, 0, 1),
|
760
|
-
"DataFormat": (ArgFormatterInterface, 0, 1),
|
761
|
-
"void **": (ArgFormatterInterface, 2, 2),
|
762
|
-
"ITEMIDLIST": (ArgFormatterIDLIST, 0, 0),
|
763
|
-
"LPITEMIDLIST": (ArgFormatterIDLIST, 0, 1),
|
764
|
-
"LPCITEMIDLIST": (ArgFormatterIDLIST, 0, 1),
|
765
|
-
"const ITEMIDLIST": (ArgFormatterIDLIST, 0, 1),
|
766
|
-
"PITEMID_CHILD": (ArgFormatterIDLIST, 1),
|
767
|
-
"const PITEMID_CHILD": (ArgFormatterIDLIST, 0),
|
768
|
-
"PCITEMID_CHILD": (ArgFormatterIDLIST, 0),
|
769
|
-
"PUITEMID_CHILD": (ArgFormatterIDLIST, 1),
|
770
|
-
"PCUITEMID_CHILD": (ArgFormatterIDLIST, 0),
|
771
|
-
"const PUITEMID_CHILD": (ArgFormatterIDLIST, 0),
|
772
|
-
"PCUITEMID_CHILD_ARRAY": (ArgFormatterIDLIST, 2),
|
773
|
-
"const PCUITEMID_CHILD_ARRAY": (ArgFormatterIDLIST, 2),
|
774
|
-
# Auto-add all the simple types
|
775
|
-
**{key: (ArgFormatterSimple, 0) for key in ConvertSimpleTypes},
|
776
|
-
}
|
777
|
-
|
778
|
-
|
779
|
-
def make_arg_converter(arg):
|
780
|
-
try:
|
781
|
-
clz = AllConverters[arg.type][0]
|
782
|
-
bin = AllConverters[arg.type][1]
|
783
|
-
decl = 0
|
784
|
-
if len(AllConverters[arg.type]) > 2:
|
785
|
-
decl = AllConverters[arg.type][2]
|
786
|
-
return clz(arg, bin, decl)
|
787
|
-
except KeyError:
|
788
|
-
if arg.type[0] == "I":
|
789
|
-
return ArgFormatterInterface(arg, 0, 1)
|
790
|
-
|
791
|
-
raise error_not_supported(f"The type '{arg.type}' ({arg.name}) is unknown.")
|
792
|
-
|
793
|
-
|
794
|
-
#############################################################
|
795
|
-
#
|
796
|
-
# The instances that represent the args, methods and interface
|
797
|
-
class Argument:
|
798
|
-
"""A representation of an argument to a COM method
|
799
|
-
|
800
|
-
This class contains information about a specific argument to a method.
|
801
|
-
In addition, methods exist so that an argument knows how to convert itself
|
802
|
-
to/from Python arguments.
|
803
|
-
"""
|
804
|
-
|
805
|
-
# in,out type name [ ]
|
806
|
-
# -------------- -------- ------------ ------
|
807
|
-
regex = re.compile(r"/\* \[([^\]]*.*?)] \*/[ \t](.*[* ]+)(\w+)(\[ *])?[\),]")
|
808
|
-
|
809
|
-
@classmethod
|
810
|
-
def drop_rpc_metadata(cls, type_):
|
811
|
-
return " ".join(e for e in type_.split(" ") if not e.startswith("__RPC_"))
|
812
|
-
|
813
|
-
def __init__(self, good_interface_names):
|
814
|
-
self.good_interface_names = good_interface_names
|
815
|
-
self.inout = None
|
816
|
-
self.name = None
|
817
|
-
self.type = None
|
818
|
-
self.raw_type = None
|
819
|
-
self.unc_type = None
|
820
|
-
self.const = 0
|
821
|
-
self.arrayDecl = 0
|
822
|
-
self.indirectionLevel = 0
|
823
|
-
|
824
|
-
def BuildFromFile(self, file):
|
825
|
-
"""Parse and build my data from a file
|
826
|
-
|
827
|
-
Reads the next line in the file, and matches it as an argument
|
828
|
-
description. If not a valid argument line, an error_not_found exception
|
829
|
-
is raised.
|
830
|
-
"""
|
831
|
-
line = file.readline()
|
832
|
-
mo = self.regex.search(line)
|
833
|
-
if not mo:
|
834
|
-
raise error_not_found
|
835
|
-
self.name = mo.group(3)
|
836
|
-
self.inout = mo.group(1).split("][")
|
837
|
-
typ = mo.group(2).strip()
|
838
|
-
self.raw_type = typ
|
839
|
-
if mo.group(4): # Has "[ ]" decl
|
840
|
-
self.arrayDecl = 1
|
841
|
-
typ_no_rpc = self.drop_rpc_metadata(typ)
|
842
|
-
if typ != typ_no_rpc:
|
843
|
-
self.indirectionLevel += 1
|
844
|
-
|
845
|
-
typ = self.drop_rpc_metadata(typ)
|
846
|
-
while 1:
|
847
|
-
try:
|
848
|
-
pos = typ.rindex("*")
|
849
|
-
self.indirectionLevel += 1
|
850
|
-
typ = typ[:pos].strip()
|
851
|
-
except ValueError:
|
852
|
-
break
|
853
|
-
self.type = typ
|
854
|
-
if self.type[:6] == "const ":
|
855
|
-
self.unc_type = self.type[6:]
|
856
|
-
else:
|
857
|
-
self.unc_type = self.type
|
858
|
-
|
859
|
-
if VERBOSE:
|
860
|
-
print(
|
861
|
-
" Arg {} of type {}{} ({})".format(
|
862
|
-
self.name, self.type, "*" * self.indirectionLevel, self.inout
|
863
|
-
)
|
864
|
-
)
|
865
|
-
|
866
|
-
def HasAttribute(self, typ):
|
867
|
-
"""Determines if the argument has the specific attribute.
|
868
|
-
|
869
|
-
Argument attributes are specified in the header file, such as
|
870
|
-
"[in][out][retval]" etc. You can pass a specific string (eg "out")
|
871
|
-
to find if this attribute was specified for the argument
|
872
|
-
"""
|
873
|
-
return typ in self.inout
|
874
|
-
|
875
|
-
def GetRawDeclaration(self):
|
876
|
-
ret = f"{self.raw_type} {self.name}"
|
877
|
-
if self.arrayDecl:
|
878
|
-
ret += "[]"
|
879
|
-
return ret
|
880
|
-
|
881
|
-
|
882
|
-
class Method:
|
883
|
-
"""A representation of a C++ method on a COM interface
|
884
|
-
|
885
|
-
This class contains information about a specific method, as well as
|
886
|
-
a list of all @Argument@s
|
887
|
-
"""
|
888
|
-
|
889
|
-
# options ret type callconv name
|
890
|
-
# ----------------- -------- -------- --------
|
891
|
-
regex = re.compile(r"virtual (/\*.*?\*/ )?(.*?) (.*?) (.*?)\(\w?")
|
892
|
-
|
893
|
-
def __init__(self, good_interface_names):
|
894
|
-
self.good_interface_names = good_interface_names
|
895
|
-
self.name = self.result = self.callconv = None
|
896
|
-
self.args = []
|
897
|
-
|
898
|
-
def BuildFromFile(self, file):
|
899
|
-
"""Parse and build my data from a file
|
900
|
-
|
901
|
-
Reads the next line in the file, and matches it as a method
|
902
|
-
description. If not a valid method line, an error_not_found exception
|
903
|
-
is raised.
|
904
|
-
"""
|
905
|
-
line = file.readline()
|
906
|
-
mo = self.regex.search(line)
|
907
|
-
if not mo:
|
908
|
-
raise error_not_found
|
909
|
-
self.name = mo.group(4)
|
910
|
-
self.result = mo.group(2)
|
911
|
-
if self.result != "HRESULT":
|
912
|
-
if self.result == "DWORD": # DWORD is for old old stuff?
|
913
|
-
print(
|
914
|
-
"Warning: Old style interface detected - compilation errors likely!"
|
915
|
-
)
|
916
|
-
else:
|
917
|
-
print(
|
918
|
-
"Method %s - Only HRESULT return types are supported." % self.name
|
919
|
-
)
|
920
|
-
# raise error_not_supported, if VERBOSE:
|
921
|
-
print(f" Method {self.result} {self.name}(")
|
922
|
-
while 1:
|
923
|
-
arg = Argument(self.good_interface_names)
|
924
|
-
try:
|
925
|
-
arg.BuildFromFile(file)
|
926
|
-
self.args.append(arg)
|
927
|
-
except error_not_found:
|
928
|
-
break
|
929
|
-
|
930
|
-
|
931
|
-
class Interface:
|
932
|
-
"""A representation of a C++ COM Interface
|
933
|
-
|
934
|
-
This class contains information about a specific interface, as well as
|
935
|
-
a list of all @Method@s
|
936
|
-
"""
|
937
|
-
|
938
|
-
# name base
|
939
|
-
# -------- --------
|
940
|
-
regex = re.compile(r"(interface|) ([^ ]*) : public (.*)$")
|
941
|
-
|
942
|
-
def __init__(self, mo):
|
943
|
-
self.methods = []
|
944
|
-
self.name = mo.group(2)
|
945
|
-
self.base = mo.group(3)
|
946
|
-
if VERBOSE:
|
947
|
-
print(f"Interface {self.name} : public {self.base}")
|
948
|
-
|
949
|
-
def BuildMethods(self, file):
|
950
|
-
"""Build all sub-methods for this interface"""
|
951
|
-
# skip the next 2 lines.
|
952
|
-
file.readline()
|
953
|
-
file.readline()
|
954
|
-
while 1:
|
955
|
-
try:
|
956
|
-
method = Method([self.name])
|
957
|
-
method.BuildFromFile(file)
|
958
|
-
self.methods.append(method)
|
959
|
-
except error_not_found:
|
960
|
-
break
|
961
|
-
|
962
|
-
|
963
|
-
def find_interface(interfaceName, file):
|
964
|
-
"""Find and return an interface in a file
|
965
|
-
|
966
|
-
Given an interface name and file, search for the specified interface.
|
967
|
-
|
968
|
-
Upon return, the interface itself has been built,
|
969
|
-
but not the methods.
|
970
|
-
"""
|
971
|
-
interface = None
|
972
|
-
line = file.readline()
|
973
|
-
while line:
|
974
|
-
mo = Interface.regex.search(line)
|
975
|
-
if mo:
|
976
|
-
name = mo.group(2)
|
977
|
-
print(name)
|
978
|
-
AllConverters[name] = (ArgFormatterInterface, 0, 1)
|
979
|
-
if name == interfaceName:
|
980
|
-
interface = Interface(mo)
|
981
|
-
interface.BuildMethods(file)
|
982
|
-
line = file.readline()
|
983
|
-
if interface:
|
984
|
-
return interface
|
985
|
-
raise error_not_found
|
986
|
-
|
987
|
-
|
988
|
-
def parse_interface_info(interfaceName, file):
|
989
|
-
"""Find, parse and return an interface in a file
|
990
|
-
|
991
|
-
Given an interface name and file, search for the specified interface.
|
992
|
-
|
993
|
-
Upon return, the interface itself is fully built,
|
994
|
-
"""
|
995
|
-
try:
|
996
|
-
return find_interface(interfaceName, file)
|
997
|
-
except re.error:
|
998
|
-
traceback.print_exc()
|
999
|
-
print("The interface could not be built, as the regular expression failed!")
|
1000
|
-
|
1001
|
-
|
1002
|
-
def test():
|
1003
|
-
f = open("d:\\msdev\\include\\objidl.h")
|
1004
|
-
try:
|
1005
|
-
parse_interface_info("IPersistStream", f)
|
1006
|
-
finally:
|
1007
|
-
f.close()
|
1008
|
-
|
1009
|
-
|
1010
|
-
def test_regex(r, text):
|
1011
|
-
res = r.search(text, 0)
|
1012
|
-
if res == -1:
|
1013
|
-
print("** Not found")
|
1014
|
-
else:
|
1015
|
-
print(
|
1016
|
-
"%d\n%s\n%s\n%s\n%s" % (res, r.group(1), r.group(2), r.group(3), r.group(4))
|
1017
|
-
)
|