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,185 +0,0 @@
|
|
1
|
-
# A Demo of services and named pipes.
|
2
|
-
|
3
|
-
# A multi-threaded service that simply echos back its input.
|
4
|
-
|
5
|
-
# * Install as a service using "pipeTestService.py install"
|
6
|
-
# * Use Control Panel to change the user name of the service
|
7
|
-
# to a real user name (ie, NOT the SystemAccount)
|
8
|
-
# * Start the service.
|
9
|
-
# * Run the "pipeTestServiceClient.py" program as the client pipe side.
|
10
|
-
|
11
|
-
import _thread
|
12
|
-
import traceback
|
13
|
-
|
14
|
-
import pywintypes
|
15
|
-
|
16
|
-
# Old versions of the service framework would not let you import this
|
17
|
-
# module at the top-level. Now you can, and can check 'servicemanager.Debugging()'
|
18
|
-
# and 'servicemanager.RunningAsService()' to check your context.
|
19
|
-
import servicemanager
|
20
|
-
import win32con
|
21
|
-
import win32service
|
22
|
-
import win32serviceutil
|
23
|
-
import winerror
|
24
|
-
|
25
|
-
# # Use "import *" to keep this looking as much as a "normal" service
|
26
|
-
# as possible. Real code shouldn't do this.
|
27
|
-
from ntsecuritycon import * # nopycln: import
|
28
|
-
from win32api import * # nopycln: import
|
29
|
-
from win32event import * # nopycln: import
|
30
|
-
from win32file import * # nopycln: import
|
31
|
-
from win32pipe import * # nopycln: import
|
32
|
-
|
33
|
-
|
34
|
-
def ApplyIgnoreError(fn, args):
|
35
|
-
try:
|
36
|
-
return fn(*args)
|
37
|
-
except error: # Ignore win32api errors.
|
38
|
-
return None
|
39
|
-
|
40
|
-
|
41
|
-
class TestPipeService(win32serviceutil.ServiceFramework):
|
42
|
-
_svc_name_ = "PyPipeTestService"
|
43
|
-
_svc_display_name_ = "Python Pipe Test Service"
|
44
|
-
_svc_description_ = "Tests Python service framework by receiving and echoing messages over a named pipe"
|
45
|
-
|
46
|
-
def __init__(self, args):
|
47
|
-
win32serviceutil.ServiceFramework.__init__(self, args)
|
48
|
-
self.hWaitStop = CreateEvent(None, 0, 0, None)
|
49
|
-
self.overlapped = pywintypes.OVERLAPPED()
|
50
|
-
self.overlapped.hEvent = CreateEvent(None, 0, 0, None)
|
51
|
-
self.thread_handles = []
|
52
|
-
|
53
|
-
def CreatePipeSecurityObject(self):
|
54
|
-
# Create a security object giving World read/write access,
|
55
|
-
# but only "Owner" modify access.
|
56
|
-
sa = pywintypes.SECURITY_ATTRIBUTES()
|
57
|
-
sidEveryone = pywintypes.SID()
|
58
|
-
sidEveryone.Initialize(SECURITY_WORLD_SID_AUTHORITY, 1)
|
59
|
-
sidEveryone.SetSubAuthority(0, SECURITY_WORLD_RID)
|
60
|
-
sidCreator = pywintypes.SID()
|
61
|
-
sidCreator.Initialize(SECURITY_CREATOR_SID_AUTHORITY, 1)
|
62
|
-
sidCreator.SetSubAuthority(0, SECURITY_CREATOR_OWNER_RID)
|
63
|
-
|
64
|
-
acl = pywintypes.ACL()
|
65
|
-
acl.AddAccessAllowedAce(FILE_GENERIC_READ | FILE_GENERIC_WRITE, sidEveryone)
|
66
|
-
acl.AddAccessAllowedAce(FILE_ALL_ACCESS, sidCreator)
|
67
|
-
|
68
|
-
sa.SetSecurityDescriptorDacl(1, acl, 0)
|
69
|
-
return sa
|
70
|
-
|
71
|
-
# The functions executed in their own thread to process a client request.
|
72
|
-
def DoProcessClient(self, pipeHandle, tid):
|
73
|
-
try:
|
74
|
-
try:
|
75
|
-
# Create a loop, reading large data. If we knew the data stream was
|
76
|
-
# was small, a simple ReadFile would do.
|
77
|
-
d = b""
|
78
|
-
hr = winerror.ERROR_MORE_DATA
|
79
|
-
while hr == winerror.ERROR_MORE_DATA:
|
80
|
-
hr, thisd = ReadFile(pipeHandle, 256)
|
81
|
-
d += thisd
|
82
|
-
print("Read", d)
|
83
|
-
ok = 1
|
84
|
-
except error:
|
85
|
-
# Client disconnection - do nothing
|
86
|
-
ok = 0
|
87
|
-
|
88
|
-
# A secure service would handle (and ignore!) errors writing to the
|
89
|
-
# pipe, but for the sake of this demo we don't (if only to see what errors
|
90
|
-
# we can get when our clients break at strange times :-)
|
91
|
-
if ok:
|
92
|
-
msg = (
|
93
|
-
"%s (on thread %d) sent me %s"
|
94
|
-
% (GetNamedPipeHandleState(pipeHandle, False, True)[4], tid, d)
|
95
|
-
).encode("ascii")
|
96
|
-
WriteFile(pipeHandle, msg)
|
97
|
-
finally:
|
98
|
-
ApplyIgnoreError(DisconnectNamedPipe, (pipeHandle,))
|
99
|
-
ApplyIgnoreError(CloseHandle, (pipeHandle,))
|
100
|
-
|
101
|
-
def ProcessClient(self, pipeHandle):
|
102
|
-
try:
|
103
|
-
procHandle = GetCurrentProcess()
|
104
|
-
th = DuplicateHandle(
|
105
|
-
procHandle,
|
106
|
-
GetCurrentThread(),
|
107
|
-
procHandle,
|
108
|
-
0,
|
109
|
-
0,
|
110
|
-
win32con.DUPLICATE_SAME_ACCESS,
|
111
|
-
)
|
112
|
-
try:
|
113
|
-
self.thread_handles.append(th)
|
114
|
-
try:
|
115
|
-
return self.DoProcessClient(pipeHandle, th)
|
116
|
-
except:
|
117
|
-
traceback.print_exc()
|
118
|
-
finally:
|
119
|
-
self.thread_handles.remove(th)
|
120
|
-
except:
|
121
|
-
traceback.print_exc()
|
122
|
-
|
123
|
-
def SvcStop(self):
|
124
|
-
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
|
125
|
-
SetEvent(self.hWaitStop)
|
126
|
-
|
127
|
-
def SvcDoRun(self):
|
128
|
-
# Write an event log record - in debug mode we will also
|
129
|
-
# see this message printed.
|
130
|
-
servicemanager.LogMsg(
|
131
|
-
servicemanager.EVENTLOG_INFORMATION_TYPE,
|
132
|
-
servicemanager.PYS_SERVICE_STARTED,
|
133
|
-
(self._svc_name_, ""),
|
134
|
-
)
|
135
|
-
|
136
|
-
num_connections = 0
|
137
|
-
while 1:
|
138
|
-
pipeHandle = CreateNamedPipe(
|
139
|
-
"\\\\.\\pipe\\PyPipeTest",
|
140
|
-
PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
|
141
|
-
PIPE_TYPE_MESSAGE | PIPE_READMODE_BYTE,
|
142
|
-
PIPE_UNLIMITED_INSTANCES, # max instances
|
143
|
-
0,
|
144
|
-
0,
|
145
|
-
6000,
|
146
|
-
self.CreatePipeSecurityObject(),
|
147
|
-
)
|
148
|
-
try:
|
149
|
-
hr = ConnectNamedPipe(pipeHandle, self.overlapped)
|
150
|
-
except error as details:
|
151
|
-
print("Error connecting pipe!", details)
|
152
|
-
CloseHandle(pipeHandle)
|
153
|
-
break
|
154
|
-
if hr == winerror.ERROR_PIPE_CONNECTED:
|
155
|
-
# Client is already connected - signal event
|
156
|
-
SetEvent(self.overlapped.hEvent)
|
157
|
-
rc = WaitForMultipleObjects(
|
158
|
-
(self.hWaitStop, self.overlapped.hEvent), 0, INFINITE
|
159
|
-
)
|
160
|
-
if rc == WAIT_OBJECT_0:
|
161
|
-
# Stop event
|
162
|
-
break
|
163
|
-
else:
|
164
|
-
# Pipe event - spawn thread to deal with it.
|
165
|
-
_thread.start_new_thread(self.ProcessClient, (pipeHandle,))
|
166
|
-
num_connections += 1
|
167
|
-
|
168
|
-
# Sleep to ensure that any new threads are in the list, and then
|
169
|
-
# wait for all current threads to finish.
|
170
|
-
# What is a better way?
|
171
|
-
Sleep(500)
|
172
|
-
while self.thread_handles:
|
173
|
-
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING, 5000)
|
174
|
-
print("Waiting for %d threads to finish..." % (len(self.thread_handles)))
|
175
|
-
WaitForMultipleObjects(self.thread_handles, 1, 3000)
|
176
|
-
# Write another event log record.
|
177
|
-
servicemanager.LogMsg(
|
178
|
-
servicemanager.EVENTLOG_INFORMATION_TYPE,
|
179
|
-
servicemanager.PYS_SERVICE_STOPPED,
|
180
|
-
(self._svc_name_, " after processing %d connections" % (num_connections,)),
|
181
|
-
)
|
182
|
-
|
183
|
-
|
184
|
-
if __name__ == "__main__":
|
185
|
-
win32serviceutil.HandleCommandLine(TestPipeService)
|
@@ -1,158 +0,0 @@
|
|
1
|
-
# A Test Program for pipeTestService.py
|
2
|
-
#
|
3
|
-
# Install and start the Pipe Test service, then run this test
|
4
|
-
# either from the same machine, or from another using the "-s" param.
|
5
|
-
#
|
6
|
-
# Eg: pipeTestServiceClient.py -s server_name Hi There
|
7
|
-
# Should work.
|
8
|
-
|
9
|
-
import os
|
10
|
-
import sys
|
11
|
-
import traceback
|
12
|
-
|
13
|
-
import pywintypes
|
14
|
-
import win32api
|
15
|
-
import winerror
|
16
|
-
|
17
|
-
# # Use "import *" to keep this looking as much as a "normal" service
|
18
|
-
# as possible. Real code shouldn't do this.
|
19
|
-
from win32event import * # nopycln: import
|
20
|
-
from win32file import * # nopycln: import
|
21
|
-
from win32pipe import * # nopycln: import
|
22
|
-
|
23
|
-
verbose = 0
|
24
|
-
|
25
|
-
# def ReadFromPipe(pipeName):
|
26
|
-
# Could (Should?) use CallNamedPipe, but this technique allows variable size
|
27
|
-
# messages (whereas you must supply a buffer size for CallNamedPipe!
|
28
|
-
# hPipe = CreateFile(pipeName, GENERIC_WRITE, 0, None, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
|
29
|
-
# more = 1
|
30
|
-
# while more:
|
31
|
-
# hr = ReadFile(hPipe, 256)
|
32
|
-
# if hr==0:
|
33
|
-
# more = 0
|
34
|
-
# except win32api.error (hr, fn, desc):
|
35
|
-
# if hr==winerror.ERROR_MORE_DATA:
|
36
|
-
# data = dat
|
37
|
-
#
|
38
|
-
|
39
|
-
|
40
|
-
def CallPipe(fn, args):
|
41
|
-
ret = None
|
42
|
-
retryCount = 0
|
43
|
-
while retryCount < 8: # Keep looping until user cancels.
|
44
|
-
retryCount += 1
|
45
|
-
try:
|
46
|
-
return fn(*args)
|
47
|
-
except win32api.error as exc:
|
48
|
-
if exc.winerror == winerror.ERROR_PIPE_BUSY:
|
49
|
-
win32api.Sleep(5000)
|
50
|
-
continue
|
51
|
-
else:
|
52
|
-
raise
|
53
|
-
|
54
|
-
raise RuntimeError("Could not make a connection to the server")
|
55
|
-
|
56
|
-
|
57
|
-
def testClient(server, msg):
|
58
|
-
if verbose:
|
59
|
-
print("Sending", msg)
|
60
|
-
data = CallPipe(
|
61
|
-
CallNamedPipe,
|
62
|
-
("\\\\%s\\pipe\\PyPipeTest" % server, msg, 256, NMPWAIT_WAIT_FOREVER),
|
63
|
-
)
|
64
|
-
if verbose:
|
65
|
-
print("Server sent back '%s'" % data)
|
66
|
-
print("Sent and received a message!")
|
67
|
-
|
68
|
-
|
69
|
-
def testLargeMessage(server, size=4096):
|
70
|
-
if verbose:
|
71
|
-
print("Sending message of size %d" % (size))
|
72
|
-
msg = "*" * size
|
73
|
-
data = CallPipe(
|
74
|
-
CallNamedPipe,
|
75
|
-
("\\\\%s\\pipe\\PyPipeTest" % server, msg, 512, NMPWAIT_WAIT_FOREVER),
|
76
|
-
)
|
77
|
-
if len(data) - size:
|
78
|
-
print("Sizes are all wrong - send %d, got back %d" % (size, len(data)))
|
79
|
-
|
80
|
-
|
81
|
-
def stressThread(server, numMessages, wait):
|
82
|
-
try:
|
83
|
-
try:
|
84
|
-
for i in range(numMessages):
|
85
|
-
r = CallPipe(
|
86
|
-
CallNamedPipe,
|
87
|
-
(
|
88
|
-
"\\\\%s\\pipe\\PyPipeTest" % server,
|
89
|
-
"#" * 512,
|
90
|
-
1024,
|
91
|
-
NMPWAIT_WAIT_FOREVER,
|
92
|
-
),
|
93
|
-
)
|
94
|
-
except:
|
95
|
-
traceback.print_exc()
|
96
|
-
print("Failed after %d messages" % i)
|
97
|
-
finally:
|
98
|
-
SetEvent(wait)
|
99
|
-
|
100
|
-
|
101
|
-
def stressTestClient(server, numThreads, numMessages):
|
102
|
-
import _thread
|
103
|
-
|
104
|
-
thread_waits = []
|
105
|
-
for t_num in range(numThreads):
|
106
|
-
# Note I could just wait on thread handles (after calling DuplicateHandle)
|
107
|
-
# See the service itself for an example of waiting for the clients...
|
108
|
-
wait = CreateEvent(None, 0, 0, None)
|
109
|
-
thread_waits.append(wait)
|
110
|
-
_thread.start_new_thread(stressThread, (server, numMessages, wait))
|
111
|
-
# Wait for all threads to finish.
|
112
|
-
WaitForMultipleObjects(thread_waits, 1, INFINITE)
|
113
|
-
|
114
|
-
|
115
|
-
def main():
|
116
|
-
import getopt
|
117
|
-
|
118
|
-
server = "."
|
119
|
-
thread_count = 0
|
120
|
-
msg_count = 500
|
121
|
-
try:
|
122
|
-
opts, args = getopt.getopt(sys.argv[1:], "s:t:m:vl")
|
123
|
-
for o, a in opts:
|
124
|
-
if o == "-s":
|
125
|
-
server = a
|
126
|
-
if o == "-m":
|
127
|
-
msg_count = int(a)
|
128
|
-
if o == "-t":
|
129
|
-
thread_count = int(a)
|
130
|
-
if o == "-v":
|
131
|
-
global verbose
|
132
|
-
verbose = 1
|
133
|
-
if o == "-l":
|
134
|
-
testLargeMessage(server)
|
135
|
-
msg = " ".join(args).encode("mbcs")
|
136
|
-
except getopt.error as msg:
|
137
|
-
print(msg)
|
138
|
-
my_name = os.path.split(sys.argv[0])[1]
|
139
|
-
print(
|
140
|
-
"Usage: %s [-v] [-s server] [-t thread_count=0] [-m msg_count=500] msg ..."
|
141
|
-
% my_name
|
142
|
-
)
|
143
|
-
print(" -v = verbose")
|
144
|
-
print(
|
145
|
-
" Specifying a value for -t will stress test using that many threads."
|
146
|
-
)
|
147
|
-
return
|
148
|
-
testClient(server, msg)
|
149
|
-
if thread_count > 0:
|
150
|
-
print(
|
151
|
-
"Spawning %d threads each sending %d messages..."
|
152
|
-
% (thread_count, msg_count)
|
153
|
-
)
|
154
|
-
stressTestClient(server, thread_count, msg_count)
|
155
|
-
|
156
|
-
|
157
|
-
if __name__ == "__main__":
|
158
|
-
main()
|
@@ -1,98 +0,0 @@
|
|
1
|
-
# A Demo of a service that takes advantage of the additional notifications
|
2
|
-
# available in later Windows versions.
|
3
|
-
|
4
|
-
# Note that all output is written as event log entries - so you must install
|
5
|
-
# and start the service, then look at the event log for messages as events
|
6
|
-
# are generated.
|
7
|
-
|
8
|
-
# Events are generated for USB device insertion and removal, power state
|
9
|
-
# changes and hardware profile events - so try putting your computer to
|
10
|
-
# sleep and waking it, inserting a memory stick, etc then check the event log
|
11
|
-
|
12
|
-
# Most event notification support lives around win32gui
|
13
|
-
import servicemanager
|
14
|
-
import win32con
|
15
|
-
import win32event
|
16
|
-
import win32gui
|
17
|
-
import win32gui_struct
|
18
|
-
import win32service
|
19
|
-
import win32serviceutil
|
20
|
-
|
21
|
-
GUID_DEVINTERFACE_USB_DEVICE = "{A5DCBF10-6530-11D2-901F-00C04FB951ED}"
|
22
|
-
|
23
|
-
|
24
|
-
class EventDemoService(win32serviceutil.ServiceFramework):
|
25
|
-
_svc_name_ = "PyServiceEventDemo"
|
26
|
-
_svc_display_name_ = "Python Service Event Demo"
|
27
|
-
_svc_description_ = (
|
28
|
-
"Demonstrates a Python service which takes advantage of the extra notifications"
|
29
|
-
)
|
30
|
-
|
31
|
-
def __init__(self, args):
|
32
|
-
win32serviceutil.ServiceFramework.__init__(self, args)
|
33
|
-
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
|
34
|
-
# register for a device notification - we pass our service handle
|
35
|
-
# instead of a window handle.
|
36
|
-
filter = win32gui_struct.PackDEV_BROADCAST_DEVICEINTERFACE(
|
37
|
-
GUID_DEVINTERFACE_USB_DEVICE
|
38
|
-
)
|
39
|
-
self.hdn = win32gui.RegisterDeviceNotification(
|
40
|
-
self.ssh, filter, win32con.DEVICE_NOTIFY_SERVICE_HANDLE
|
41
|
-
)
|
42
|
-
|
43
|
-
# Override the base class so we can accept additional events.
|
44
|
-
def GetAcceptedControls(self):
|
45
|
-
# say we accept them all.
|
46
|
-
rc = win32serviceutil.ServiceFramework.GetAcceptedControls(self)
|
47
|
-
rc |= (
|
48
|
-
win32service.SERVICE_ACCEPT_PARAMCHANGE
|
49
|
-
| win32service.SERVICE_ACCEPT_NETBINDCHANGE
|
50
|
-
| win32service.SERVICE_CONTROL_DEVICEEVENT
|
51
|
-
| win32service.SERVICE_ACCEPT_HARDWAREPROFILECHANGE
|
52
|
-
| win32service.SERVICE_ACCEPT_POWEREVENT
|
53
|
-
| win32service.SERVICE_ACCEPT_SESSIONCHANGE
|
54
|
-
)
|
55
|
-
return rc
|
56
|
-
|
57
|
-
# All extra events are sent via SvcOtherEx (SvcOther remains as a
|
58
|
-
# function taking only the first args for backwards compat)
|
59
|
-
def SvcOtherEx(self, control, event_type, data):
|
60
|
-
# This is only showing a few of the extra events - see the MSDN
|
61
|
-
# docs for "HandlerEx callback" for more info.
|
62
|
-
if control == win32service.SERVICE_CONTROL_DEVICEEVENT:
|
63
|
-
info = win32gui_struct.UnpackDEV_BROADCAST(data)
|
64
|
-
msg = f"A device event occurred: {event_type:x} - {info}"
|
65
|
-
elif control == win32service.SERVICE_CONTROL_HARDWAREPROFILECHANGE:
|
66
|
-
msg = f"A hardware profile changed: type={event_type}, data={data}"
|
67
|
-
elif control == win32service.SERVICE_CONTROL_POWEREVENT:
|
68
|
-
msg = "A power event: setting %s" % data
|
69
|
-
elif control == win32service.SERVICE_CONTROL_SESSIONCHANGE:
|
70
|
-
# data is a single elt tuple, but this could potentially grow
|
71
|
-
# in the future if the win32 struct does
|
72
|
-
msg = f"Session event: type={event_type}, data={data}"
|
73
|
-
else:
|
74
|
-
msg = "Other event: code=%d, type=%s, data=%s" % (control, event_type, data)
|
75
|
-
|
76
|
-
servicemanager.LogMsg(
|
77
|
-
servicemanager.EVENTLOG_INFORMATION_TYPE,
|
78
|
-
0xF000, # generic message
|
79
|
-
(msg, ""),
|
80
|
-
)
|
81
|
-
|
82
|
-
def SvcStop(self):
|
83
|
-
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
|
84
|
-
win32event.SetEvent(self.hWaitStop)
|
85
|
-
|
86
|
-
def SvcDoRun(self):
|
87
|
-
# do nothing at all - just wait to be stopped
|
88
|
-
win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)
|
89
|
-
# Write a stop message.
|
90
|
-
servicemanager.LogMsg(
|
91
|
-
servicemanager.EVENTLOG_INFORMATION_TYPE,
|
92
|
-
servicemanager.PYS_SERVICE_STOPPED,
|
93
|
-
(self._svc_name_, ""),
|
94
|
-
)
|
95
|
-
|
96
|
-
|
97
|
-
if __name__ == "__main__":
|
98
|
-
win32serviceutil.HandleCommandLine(EventDemoService)
|
@@ -1,72 +0,0 @@
|
|
1
|
-
# -*- Mode: Python; tab-width: 4 -*-
|
2
|
-
#
|
3
|
-
|
4
|
-
# This module, and the timer.pyd core timer support, were written by
|
5
|
-
# Sam Rushing (rushing@nightmare.com)
|
6
|
-
|
7
|
-
import time
|
8
|
-
|
9
|
-
# Timers are based on Windows messages. So we need
|
10
|
-
# to do the event-loop thing!
|
11
|
-
import timer
|
12
|
-
import win32event
|
13
|
-
import win32gui
|
14
|
-
|
15
|
-
# glork holds a simple counter for us.
|
16
|
-
|
17
|
-
|
18
|
-
class glork:
|
19
|
-
def __init__(self, delay=1000, max=10):
|
20
|
-
self.x = 0
|
21
|
-
self.max = max
|
22
|
-
self.id = timer.set_timer(delay, self.increment)
|
23
|
-
# Could use the threading module, but this is
|
24
|
-
# a win32 extension test after all! :-)
|
25
|
-
self.event = win32event.CreateEvent(None, 0, 0, None)
|
26
|
-
|
27
|
-
def increment(self, id, time):
|
28
|
-
print("x = %d" % self.x)
|
29
|
-
self.x += 1
|
30
|
-
# if we've reached the max count,
|
31
|
-
# kill off the timer.
|
32
|
-
if self.x > self.max:
|
33
|
-
# we could have used 'self.id' here, too
|
34
|
-
timer.kill_timer(id)
|
35
|
-
win32event.SetEvent(self.event)
|
36
|
-
|
37
|
-
|
38
|
-
# create a counter that will count from '1' thru '10', incrementing
|
39
|
-
# once a second, and then stop.
|
40
|
-
|
41
|
-
|
42
|
-
def demo(delay=1000, stop=10):
|
43
|
-
g = glork(delay, stop)
|
44
|
-
# Timers are message based - so we need
|
45
|
-
# To run a message loop while waiting for our timers
|
46
|
-
# to expire.
|
47
|
-
start_time = time.time()
|
48
|
-
while 1:
|
49
|
-
# We can't simply give a timeout of 30 seconds, as
|
50
|
-
# we may continouusly be recieving other input messages,
|
51
|
-
# and therefore never expire.
|
52
|
-
rc = win32event.MsgWaitForMultipleObjects(
|
53
|
-
(g.event,), # list of objects
|
54
|
-
0, # wait all
|
55
|
-
500, # timeout
|
56
|
-
win32event.QS_ALLEVENTS, # type of input
|
57
|
-
)
|
58
|
-
if rc == win32event.WAIT_OBJECT_0:
|
59
|
-
# Event signalled.
|
60
|
-
break
|
61
|
-
elif rc == win32event.WAIT_OBJECT_0 + 1:
|
62
|
-
# Message waiting.
|
63
|
-
if win32gui.PumpWaitingMessages():
|
64
|
-
raise RuntimeError("We got an unexpected WM_QUIT message!")
|
65
|
-
else:
|
66
|
-
# This wait timed-out.
|
67
|
-
if time.time() - start_time > 30:
|
68
|
-
raise RuntimeError("We timed out waiting for the timers to expire!")
|
69
|
-
|
70
|
-
|
71
|
-
if __name__ == "__main__":
|
72
|
-
demo()
|
@@ -1,155 +0,0 @@
|
|
1
|
-
# win32clipboardDemo.py
|
2
|
-
#
|
3
|
-
# Demo/test of the win32clipboard module.
|
4
|
-
import win32con
|
5
|
-
from win32clipboard import (
|
6
|
-
CloseClipboard,
|
7
|
-
EmptyClipboard,
|
8
|
-
EnumClipboardFormats,
|
9
|
-
GetClipboardData,
|
10
|
-
GetClipboardFormatName,
|
11
|
-
IsClipboardFormatAvailable,
|
12
|
-
OpenClipboard,
|
13
|
-
RegisterClipboardFormat,
|
14
|
-
SetClipboardData,
|
15
|
-
SetClipboardText,
|
16
|
-
)
|
17
|
-
|
18
|
-
if not __debug__:
|
19
|
-
print("WARNING: The test code in this module uses assert")
|
20
|
-
print("This instance of Python has asserts disabled, so many tests will be skipped")
|
21
|
-
|
22
|
-
# Build map of CF_* constants to names.
|
23
|
-
cf_names = {
|
24
|
-
val: name
|
25
|
-
for name, val in win32con.__dict__.items()
|
26
|
-
if name[:3] == "CF_" and name != "CF_SCREENFONTS" # CF_SCREEN_FONTS==CF_TEXT!?!?
|
27
|
-
}
|
28
|
-
|
29
|
-
|
30
|
-
def TestEmptyClipboard():
|
31
|
-
OpenClipboard()
|
32
|
-
try:
|
33
|
-
EmptyClipboard()
|
34
|
-
assert (
|
35
|
-
EnumClipboardFormats(0) == 0
|
36
|
-
), "Clipboard formats were available after emptying it!"
|
37
|
-
finally:
|
38
|
-
CloseClipboard()
|
39
|
-
|
40
|
-
|
41
|
-
def TestText():
|
42
|
-
OpenClipboard()
|
43
|
-
try:
|
44
|
-
text = "Hello from Python"
|
45
|
-
text_bytes = text.encode("latin1")
|
46
|
-
SetClipboardText(text)
|
47
|
-
got = GetClipboardData(win32con.CF_TEXT)
|
48
|
-
# CF_TEXT always gives us 'bytes' back .
|
49
|
-
assert got == text_bytes, f"Didn't get the correct result back - '{got!r}'."
|
50
|
-
finally:
|
51
|
-
CloseClipboard()
|
52
|
-
|
53
|
-
OpenClipboard()
|
54
|
-
try:
|
55
|
-
# CF_UNICODE text always gives unicode objects back.
|
56
|
-
got = GetClipboardData(win32con.CF_UNICODETEXT)
|
57
|
-
assert got == text, f"Didn't get the correct result back - '{got!r}'."
|
58
|
-
assert isinstance(got, str), f"Didn't get the correct result back - '{got!r}'."
|
59
|
-
|
60
|
-
# CF_OEMTEXT is a bytes-based format.
|
61
|
-
got = GetClipboardData(win32con.CF_OEMTEXT)
|
62
|
-
assert got == text_bytes, f"Didn't get the correct result back - '{got!r}'."
|
63
|
-
|
64
|
-
# Unicode tests
|
65
|
-
EmptyClipboard()
|
66
|
-
text = "Hello from Python unicode"
|
67
|
-
text_bytes = text.encode("latin1")
|
68
|
-
# Now set the Unicode value
|
69
|
-
SetClipboardData(win32con.CF_UNICODETEXT, text)
|
70
|
-
# Get it in Unicode.
|
71
|
-
got = GetClipboardData(win32con.CF_UNICODETEXT)
|
72
|
-
assert got == text, f"Didn't get the correct result back - '{got!r}'."
|
73
|
-
assert isinstance(got, str), f"Didn't get the correct result back - '{got!r}'."
|
74
|
-
|
75
|
-
# Close and open the clipboard to ensure auto-conversions take place.
|
76
|
-
finally:
|
77
|
-
CloseClipboard()
|
78
|
-
|
79
|
-
OpenClipboard()
|
80
|
-
try:
|
81
|
-
# Make sure I can still get the text as bytes
|
82
|
-
got = GetClipboardData(win32con.CF_TEXT)
|
83
|
-
assert got == text_bytes, f"Didn't get the correct result back - '{got!r}'."
|
84
|
-
# Make sure we get back the correct types.
|
85
|
-
got = GetClipboardData(win32con.CF_UNICODETEXT)
|
86
|
-
assert isinstance(got, str), f"Didn't get the correct result back - '{got!r}'."
|
87
|
-
got = GetClipboardData(win32con.CF_OEMTEXT)
|
88
|
-
assert got == text_bytes, f"Didn't get the correct result back - '{got!r}'."
|
89
|
-
print("Clipboard text tests worked correctly")
|
90
|
-
finally:
|
91
|
-
CloseClipboard()
|
92
|
-
|
93
|
-
|
94
|
-
def TestClipboardEnum():
|
95
|
-
OpenClipboard()
|
96
|
-
try:
|
97
|
-
# Enumerate over the clipboard types
|
98
|
-
enum = 0
|
99
|
-
while 1:
|
100
|
-
enum = EnumClipboardFormats(enum)
|
101
|
-
if enum == 0:
|
102
|
-
break
|
103
|
-
assert IsClipboardFormatAvailable(
|
104
|
-
enum
|
105
|
-
), "Have format, but clipboard says it is not available!"
|
106
|
-
n = cf_names.get(enum, "")
|
107
|
-
if not n:
|
108
|
-
try:
|
109
|
-
n = GetClipboardFormatName(enum)
|
110
|
-
except error:
|
111
|
-
n = f"unknown ({enum})"
|
112
|
-
|
113
|
-
print("Have format", n)
|
114
|
-
print("Clipboard enumerator tests worked correctly")
|
115
|
-
finally:
|
116
|
-
CloseClipboard()
|
117
|
-
|
118
|
-
|
119
|
-
class Foo:
|
120
|
-
def __init__(self, **kw):
|
121
|
-
self.__dict__.update(kw)
|
122
|
-
|
123
|
-
def __lt__(self, other):
|
124
|
-
return self.__dict__ < other.__dict__
|
125
|
-
|
126
|
-
def __eq__(self, other):
|
127
|
-
return self.__dict__ == other.__dict__
|
128
|
-
|
129
|
-
|
130
|
-
def TestCustomFormat():
|
131
|
-
OpenClipboard()
|
132
|
-
try:
|
133
|
-
# Just for the fun of it pickle Python objects through the clipboard
|
134
|
-
fmt = RegisterClipboardFormat("Python Pickle Format")
|
135
|
-
import pickle
|
136
|
-
|
137
|
-
pickled_object = Foo(a=1, b=2, Hi=3)
|
138
|
-
SetClipboardData(fmt, pickle.dumps(pickled_object))
|
139
|
-
# Now read it back.
|
140
|
-
data = GetClipboardData(fmt)
|
141
|
-
loaded_object = pickle.loads(data)
|
142
|
-
assert pickle.loads(data) == pickled_object, "Didn't get the correct data!"
|
143
|
-
|
144
|
-
print("Clipboard custom format tests worked correctly")
|
145
|
-
finally:
|
146
|
-
CloseClipboard()
|
147
|
-
|
148
|
-
|
149
|
-
if __name__ == "__main__":
|
150
|
-
TestEmptyClipboard()
|
151
|
-
TestText()
|
152
|
-
TestCustomFormat()
|
153
|
-
TestClipboardEnum()
|
154
|
-
# And leave it empty at the end!
|
155
|
-
TestEmptyClipboard()
|