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.
Files changed (604) hide show
  1. py2docfx/docfx_yaml/process_doctree.py +21 -34
  2. py2docfx/docfx_yaml/tests/test_method_arguments.py +1 -7
  3. py2docfx/docfx_yaml/tests/test_process_doctree.py +120 -0
  4. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_core_metadata.py +21 -5
  5. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +13 -0
  6. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/ccompiler.py +5 -2
  7. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build.py +1 -6
  8. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_clib.py +1 -9
  9. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_ext.py +1 -8
  10. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/check.py +1 -1
  11. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
  12. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/install.py +8 -17
  13. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compat/numpy.py +2 -0
  14. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +8 -5
  15. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +1 -1
  16. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +15 -1
  17. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/dist.py +2 -1
  18. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -10
  19. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +60 -5
  20. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/unixccompiler.py +6 -0
  21. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/util.py +7 -6
  22. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_normalization.py +29 -0
  23. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +1 -1
  24. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py +613 -0
  25. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +2 -2
  26. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +25 -594
  27. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +6 -6
  28. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +282 -223
  29. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +22 -9
  30. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +16 -13
  31. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -9
  32. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +40 -9
  33. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +6 -2
  34. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +49 -11
  35. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +31 -1
  36. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +222 -129
  37. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +30 -3
  38. py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +168 -51
  39. py2docfx/venv/basevenv/Lib/site-packages/setuptools/msvc.py +12 -3
  40. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +246 -13
  41. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +42 -29
  42. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +1 -1
  43. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +93 -8
  44. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +17 -4
  45. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_core_metadata.py +45 -0
  46. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +24 -4
  47. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_sdist.py +13 -1
  48. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +1 -1
  49. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +4 -4
  50. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +4 -4
  51. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +4 -4
  52. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_database.py +22 -4
  53. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +82 -35
  54. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +4 -4
  55. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +4 -4
  56. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +4 -4
  57. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/builder.py +4 -3
  58. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/containers.py +13 -0
  59. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/decoder.py +62 -115
  60. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_edition_defaults.py +1 -1
  61. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_message.py +15 -18
  62. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/testing_refleaks.py +4 -1
  63. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/type_checkers.py +5 -0
  64. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/well_known_types.py +3 -3
  65. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/json_format.py +25 -9
  66. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message.py +26 -0
  67. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message_factory.py +0 -63
  68. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto.py +38 -1
  69. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto_text.py +129 -0
  70. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/reflection.py +0 -49
  71. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +3 -3
  72. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +4 -4
  73. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +4 -4
  74. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/symbol_database.py +0 -18
  75. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_format.py +8 -3
  76. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +4 -4
  77. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +4 -4
  78. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/unknown_fields.py +3 -4
  79. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +4 -4
  80. py2docfx/venv/venv1/Lib/site-packages/msal/__init__.py +1 -1
  81. py2docfx/venv/venv1/Lib/site-packages/msal/application.py +51 -17
  82. py2docfx/venv/venv1/Lib/site-packages/msal/broker.py +18 -4
  83. py2docfx/venv/venv1/Lib/site-packages/msal/cloudshell.py +5 -1
  84. py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +5 -4
  85. py2docfx/venv/venv1/Lib/site-packages/msal/sku.py +6 -0
  86. py2docfx/venv/venv1/Lib/site-packages/msal/token_cache.py +31 -10
  87. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/__init__.py +2 -3
  88. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/cache_lock.py +4 -1
  89. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/filelock.py +62 -0
  90. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/libsecret.py +1 -1
  91. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/token_cache.py +7 -1
  92. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/__init__.py +1 -1
  93. py2docfx/venv/venv1/Lib/site-packages/setuptools/_core_metadata.py +21 -5
  94. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +13 -0
  95. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/ccompiler.py +5 -2
  96. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build.py +1 -6
  97. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_clib.py +1 -9
  98. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_ext.py +1 -8
  99. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/check.py +1 -1
  100. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
  101. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/install.py +8 -17
  102. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compat/numpy.py +2 -0
  103. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +8 -5
  104. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +1 -1
  105. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +15 -1
  106. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/dist.py +2 -1
  107. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -10
  108. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +60 -5
  109. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/unixccompiler.py +6 -0
  110. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/util.py +7 -6
  111. py2docfx/venv/venv1/Lib/site-packages/setuptools/_normalization.py +29 -0
  112. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +1 -1
  113. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py +613 -0
  114. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +2 -2
  115. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +25 -594
  116. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +6 -6
  117. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +282 -223
  118. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +22 -9
  119. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +16 -13
  120. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -9
  121. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +40 -9
  122. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +6 -2
  123. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +49 -11
  124. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +31 -1
  125. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +222 -129
  126. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +30 -3
  127. py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +168 -51
  128. py2docfx/venv/venv1/Lib/site-packages/setuptools/msvc.py +12 -3
  129. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +246 -13
  130. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +42 -29
  131. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +1 -1
  132. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +93 -8
  133. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +17 -4
  134. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_core_metadata.py +45 -0
  135. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +24 -4
  136. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_sdist.py +13 -1
  137. py2docfx/venv/venv1/Lib/site-packages/typing_extensions.py +999 -74
  138. {py2docfx-0.1.15rc2025477.dist-info → py2docfx-0.1.16.dist-info}/METADATA +1 -1
  139. {py2docfx-0.1.15rc2025477.dist-info → py2docfx-0.1.16.dist-info}/RECORD +141 -596
  140. py2docfx/venv/venv1/Lib/site-packages/adodbapi/__init__.py +0 -82
  141. py2docfx/venv/venv1/Lib/site-packages/adodbapi/ado_consts.py +0 -283
  142. py2docfx/venv/venv1/Lib/site-packages/adodbapi/adodbapi.py +0 -1153
  143. py2docfx/venv/venv1/Lib/site-packages/adodbapi/apibase.py +0 -723
  144. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_print.py +0 -72
  145. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_table_names.py +0 -21
  146. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_read.py +0 -41
  147. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_write.py +0 -41
  148. py2docfx/venv/venv1/Lib/site-packages/adodbapi/is64bit.py +0 -34
  149. py2docfx/venv/venv1/Lib/site-packages/adodbapi/process_connect_string.py +0 -137
  150. py2docfx/venv/venv1/Lib/site-packages/adodbapi/schema_table.py +0 -16
  151. py2docfx/venv/venv1/Lib/site-packages/adodbapi/setup.py +0 -68
  152. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitest.py +0 -1547
  153. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitestconfig.py +0 -184
  154. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/dbapi20.py +0 -879
  155. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/is64bit.py +0 -34
  156. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/setuptestframework.py +0 -98
  157. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/test_adodbapi_dbapi20.py +0 -195
  158. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/tryconnection.py +0 -30
  159. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/_parameterized.py +0 -420
  160. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/service.py +0 -213
  161. py2docfx/venv/venv1/Lib/site-packages/isapi/__init__.py +0 -39
  162. py2docfx/venv/venv1/Lib/site-packages/isapi/install.py +0 -809
  163. py2docfx/venv/venv1/Lib/site-packages/isapi/isapicon.py +0 -121
  164. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/advanced.py +0 -218
  165. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector.py +0 -116
  166. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_asynch.py +0 -85
  167. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_with_filter.py +0 -162
  168. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/test.py +0 -195
  169. py2docfx/venv/venv1/Lib/site-packages/isapi/simple.py +0 -73
  170. py2docfx/venv/venv1/Lib/site-packages/isapi/test/extension_simple.py +0 -114
  171. py2docfx/venv/venv1/Lib/site-packages/isapi/threaded_extension.py +0 -191
  172. py2docfx/venv/venv1/Lib/site-packages/portalocker/__about__.py +0 -6
  173. py2docfx/venv/venv1/Lib/site-packages/portalocker/__init__.py +0 -79
  174. py2docfx/venv/venv1/Lib/site-packages/portalocker/__main__.py +0 -122
  175. py2docfx/venv/venv1/Lib/site-packages/portalocker/constants.py +0 -59
  176. py2docfx/venv/venv1/Lib/site-packages/portalocker/exceptions.py +0 -27
  177. py2docfx/venv/venv1/Lib/site-packages/portalocker/portalocker.py +0 -154
  178. py2docfx/venv/venv1/Lib/site-packages/portalocker/redis.py +0 -236
  179. py2docfx/venv/venv1/Lib/site-packages/portalocker/utils.py +0 -569
  180. py2docfx/venv/venv1/Lib/site-packages/pythoncom.py +0 -4
  181. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/basictimerapp.py +0 -258
  182. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/customprint.py +0 -183
  183. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/demoutils.py +0 -63
  184. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dlgappdemo.py +0 -51
  185. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dojobapp.py +0 -71
  186. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/helloapp.py +0 -53
  187. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/cmdserver.py +0 -113
  188. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/createwin.py +0 -114
  189. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/demoutils.py +0 -65
  190. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dibdemo.py +0 -73
  191. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dlgtest.py +0 -145
  192. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dyndlg.py +0 -104
  193. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/fontdemo.py +0 -85
  194. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/guidemo.py +0 -53
  195. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/hiertest.py +0 -138
  196. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/menutest.py +0 -13
  197. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/objdoc.py +0 -57
  198. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/demoutils.py +0 -63
  199. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/flash.py +0 -95
  200. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/msoffice.py +0 -159
  201. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxserialtest.py +0 -132
  202. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxtest.py +0 -243
  203. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/webbrowser.py +0 -72
  204. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/openGLDemo.py +0 -415
  205. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/progressbar.py +0 -105
  206. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/sliderdemo.py +0 -76
  207. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/splittst.py +0 -79
  208. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/threadedgui.py +0 -189
  209. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/toolbar.py +0 -105
  210. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/__init__.py +0 -3
  211. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/__init__.py +0 -133
  212. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/configui.py +0 -34
  213. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgcon.py +0 -31
  214. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgpyapp.py +0 -48
  215. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/debugger.py +0 -1097
  216. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/fail.py +0 -54
  217. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/__init__.py +0 -0
  218. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/ideoptions.py +0 -136
  219. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/list.py +0 -146
  220. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/login.py +0 -155
  221. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/status.py +0 -242
  222. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/DockingBar.py +0 -676
  223. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/__init__.py +0 -0
  224. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/__init__.py +0 -0
  225. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/app.py +0 -411
  226. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/bitmap.py +0 -168
  227. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/cmdline.py +0 -54
  228. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dbgcommands.py +0 -188
  229. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dlgappcore.py +0 -76
  230. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/ModuleBrowser.py +0 -235
  231. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/__init__.py +0 -105
  232. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color/__init__.py +0 -0
  233. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color/coloreditor.py +0 -646
  234. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/configui.py +0 -299
  235. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/document.py +0 -379
  236. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/editor.py +0 -511
  237. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/frame.py +0 -74
  238. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/template.py +0 -59
  239. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/vss.py +0 -104
  240. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/help.py +0 -173
  241. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/interact.py +0 -995
  242. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpyapp.py +0 -552
  243. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpydde.py +0 -65
  244. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/scriptutils.py +0 -684
  245. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/sgrepmdi.py +0 -749
  246. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/startup.py +0 -70
  247. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/stdin.py +0 -172
  248. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/toolmenu.py +0 -279
  249. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/window.py +0 -14
  250. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/winout.py +0 -589
  251. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoExpand.py +0 -95
  252. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoIndent.py +0 -536
  253. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/CallTips.py +0 -216
  254. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/FormatParagraph.py +0 -166
  255. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/IdleHistory.py +0 -87
  256. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/PyParse.py +0 -585
  257. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/__init__.py +0 -1
  258. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/__init__.py +0 -0
  259. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/activex.py +0 -79
  260. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/afxres.py +0 -501
  261. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/dialog.py +0 -277
  262. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/docview.py +0 -151
  263. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/object.py +0 -66
  264. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/thread.py +0 -25
  265. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/window.py +0 -50
  266. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/IDLEenvironment.py +0 -593
  267. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/__init__.py +0 -1
  268. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/bindings.py +0 -180
  269. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/config.py +0 -363
  270. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/configui.py +0 -291
  271. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/control.py +0 -565
  272. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/document.py +0 -312
  273. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/find.py +0 -511
  274. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/formatter.py +0 -704
  275. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/keycodes.py +0 -190
  276. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/scintillacon.py +0 -3083
  277. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/view.py +0 -841
  278. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/TraceCollector.py +0 -79
  279. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/__init__.py +0 -0
  280. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browseProjects.py +0 -323
  281. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browser.py +0 -494
  282. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/hierlist.py +0 -353
  283. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regedit.py +0 -382
  284. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regpy.py +0 -80
  285. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupRead_BackupWrite.py +0 -119
  286. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupSeek_streamheaders.py +0 -137
  287. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CopyFileEx.py +0 -57
  288. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CreateFileTransacted_MiniVersion.py +0 -122
  289. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtFormatMessage.py +0 -83
  290. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_pull.py +0 -28
  291. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_push.py +0 -32
  292. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/FileSecurityTest.py +0 -137
  293. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/GetSaveFileName.py +0 -43
  294. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/NetValidatePasswordPolicy.py +0 -127
  295. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/OpenEncryptedFileRaw.py +0 -66
  296. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegCreateKeyTransacted.py +0 -60
  297. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegRestoreKey.py +0 -71
  298. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/SystemParametersInfo.py +0 -210
  299. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/c_extension/setup.py +0 -26
  300. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeclient.py +0 -18
  301. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeserver.py +0 -42
  302. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/desktopmanager.py +0 -246
  303. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/eventLogDemo.py +0 -143
  304. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/getfilever.py +0 -33
  305. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/mmapfile_demo.py +0 -101
  306. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/cat.py +0 -17
  307. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/runproc.py +0 -114
  308. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/print_desktop.py +0 -113
  309. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/rastest.py +0 -166
  310. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/GetTokenInformation.py +0 -110
  311. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/account_rights.py +0 -49
  312. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/explicit_entries.py +0 -170
  313. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/get_policy_info.py +0 -39
  314. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/list_rights.py +0 -35
  315. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/localized_names.py +0 -70
  316. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsaregevent.py +0 -14
  317. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsastore.py +0 -12
  318. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/query_information.py +0 -25
  319. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsave_sa.py +0 -61
  320. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsecurity.py +0 -36
  321. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sa_inherit.py +0 -8
  322. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/security_enums.py +0 -336
  323. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_audit.py +0 -106
  324. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_owner.py +0 -73
  325. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_policy_info.py +0 -25
  326. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setkernelobjectsecurity.py +0 -134
  327. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setnamedsecurityinfo.py +0 -131
  328. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setsecurityinfo.py +0 -131
  329. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setuserobjectsecurity.py +0 -102
  330. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/fetch_url.py +0 -158
  331. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/simple_auth.py +0 -72
  332. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/socket_server.py +0 -199
  333. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/validate_password.py +0 -41
  334. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/nativePipeTestService.py +0 -63
  335. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestService.py +0 -185
  336. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestServiceClient.py +0 -158
  337. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/serviceEvents.py +0 -98
  338. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/timer_demo.py +0 -72
  339. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboardDemo.py +0 -155
  340. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboard_bitmapdemo.py +0 -117
  341. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32comport_demo.py +0 -174
  342. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32console_demo.py +0 -132
  343. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32cred_demo.py +0 -82
  344. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32fileDemo.py +0 -41
  345. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_demo.py +0 -177
  346. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_devicenotify.py +0 -106
  347. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_dialog.py +0 -445
  348. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_menu.py +0 -464
  349. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_taskbar.py +0 -136
  350. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32netdemo.py +0 -272
  351. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32rcparser_demo.py +0 -86
  352. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32servicedemo.py +0 -23
  353. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32ts_logoff_disconnected.py +0 -25
  354. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/testwnet.py +0 -123
  355. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/winnetwk.py +0 -100
  356. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/winprocess.py +0 -230
  357. py2docfx/venv/venv1/Lib/site-packages/win32/lib/_win32verstamp_pywin32ctypes.py +0 -164
  358. py2docfx/venv/venv1/Lib/site-packages/win32/lib/afxres.py +0 -8
  359. py2docfx/venv/venv1/Lib/site-packages/win32/lib/commctrl.py +0 -1551
  360. py2docfx/venv/venv1/Lib/site-packages/win32/lib/mmsystem.py +0 -956
  361. py2docfx/venv/venv1/Lib/site-packages/win32/lib/netbios.py +0 -293
  362. py2docfx/venv/venv1/Lib/site-packages/win32/lib/ntsecuritycon.py +0 -731
  363. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_bootstrap.py +0 -21
  364. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_testutil.py +0 -291
  365. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywintypes.py +0 -124
  366. py2docfx/venv/venv1/Lib/site-packages/win32/lib/rasutil.py +0 -40
  367. py2docfx/venv/venv1/Lib/site-packages/win32/lib/regcheck.py +0 -161
  368. py2docfx/venv/venv1/Lib/site-packages/win32/lib/regutil.py +0 -395
  369. py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspi.py +0 -413
  370. py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspicon.py +0 -477
  371. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win2kras.py +0 -14
  372. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32con.py +0 -5064
  373. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32cryptcon.py +0 -1922
  374. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32evtlogutil.py +0 -225
  375. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32gui_struct.py +0 -957
  376. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32inetcon.py +0 -1086
  377. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32netcon.py +0 -627
  378. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhquery.py +0 -570
  379. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhutil.py +0 -212
  380. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32rcparser.py +0 -674
  381. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32serviceutil.py +0 -1073
  382. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32timezone.py +0 -1201
  383. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32traceutil.py +0 -59
  384. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32verstamp.py +0 -235
  385. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winerror.py +0 -7362
  386. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winioctlcon.py +0 -1079
  387. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winnt.py +0 -1347
  388. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winperf.py +0 -236
  389. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winxptheme.py +0 -8
  390. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/ControlService.py +0 -594
  391. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/BrandProject.py +0 -97
  392. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/bulkstamp.py +0 -156
  393. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/vssutil.py +0 -201
  394. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/backupEventLog.py +0 -46
  395. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/h2py.py +0 -194
  396. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/killProcName.py +0 -62
  397. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/pywin32_postinstall.py +0 -733
  398. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/pywin32_testall.py +0 -120
  399. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/rasutil.py +0 -98
  400. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/regsetup.py +0 -607
  401. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/setup_d.py +0 -111
  402. py2docfx/venv/venv1/Lib/site-packages/win32/test/handles.py +0 -175
  403. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_clipboard.py +0 -137
  404. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_exceptions.py +0 -213
  405. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_odbc.py +0 -264
  406. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_pywintypes.py +0 -111
  407. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_security.py +0 -166
  408. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_sspi.py +0 -229
  409. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32api.py +0 -273
  410. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32clipboard.py +0 -59
  411. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32cred.py +0 -91
  412. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32crypt.py +0 -144
  413. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32event.py +0 -119
  414. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32file.py +0 -1096
  415. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32gui.py +0 -227
  416. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32guistruct.py +0 -333
  417. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32inet.py +0 -108
  418. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32net.py +0 -23
  419. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32pipe.py +0 -148
  420. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32print.py +0 -24
  421. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32profile.py +0 -19
  422. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32rcparser.py +0 -70
  423. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32timezone.py +0 -16
  424. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32trace.py +0 -366
  425. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32ts.py +0 -19
  426. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32wnet.py +0 -174
  427. py2docfx/venv/venv1/Lib/site-packages/win32/test/testall.py +0 -223
  428. py2docfx/venv/venv1/Lib/site-packages/win32/winxpgui.py +0 -13
  429. py2docfx/venv/venv1/Lib/site-packages/win32com/__init__.py +0 -134
  430. py2docfx/venv/venv1/Lib/site-packages/win32com/client/CLSIDToClass.py +0 -60
  431. py2docfx/venv/venv1/Lib/site-packages/win32com/client/__init__.py +0 -717
  432. py2docfx/venv/venv1/Lib/site-packages/win32com/client/build.py +0 -771
  433. py2docfx/venv/venv1/Lib/site-packages/win32com/client/combrowse.py +0 -604
  434. py2docfx/venv/venv1/Lib/site-packages/win32com/client/connect.py +0 -48
  435. py2docfx/venv/venv1/Lib/site-packages/win32com/client/dynamic.py +0 -699
  436. py2docfx/venv/venv1/Lib/site-packages/win32com/client/gencache.py +0 -825
  437. py2docfx/venv/venv1/Lib/site-packages/win32com/client/genpy.py +0 -1350
  438. py2docfx/venv/venv1/Lib/site-packages/win32com/client/makepy.py +0 -453
  439. py2docfx/venv/venv1/Lib/site-packages/win32com/client/selecttlb.py +0 -182
  440. py2docfx/venv/venv1/Lib/site-packages/win32com/client/tlbrowse.py +0 -277
  441. py2docfx/venv/venv1/Lib/site-packages/win32com/client/util.py +0 -103
  442. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/__init__.py +0 -0
  443. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/connect.py +0 -96
  444. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/dump_clipboard.py +0 -74
  445. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsApartmentThreaded.py +0 -98
  446. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsFreeThreaded.py +0 -92
  447. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelAddin.py +0 -169
  448. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelRTDServer.py +0 -434
  449. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/iebutton.py +0 -214
  450. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/ietoolbar.py +0 -368
  451. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/outlookAddin.py +0 -135
  452. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/trybag.py +0 -78
  453. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/__init__.py +0 -1
  454. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegw.py +0 -618
  455. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwenum.py +0 -331
  456. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwparse.py +0 -1017
  457. py2docfx/venv/venv1/Lib/site-packages/win32com/olectl.py +0 -70
  458. py2docfx/venv/venv1/Lib/site-packages/win32com/server/__init__.py +0 -1
  459. py2docfx/venv/venv1/Lib/site-packages/win32com/server/connect.py +0 -85
  460. py2docfx/venv/venv1/Lib/site-packages/win32com/server/dispatcher.py +0 -239
  461. py2docfx/venv/venv1/Lib/site-packages/win32com/server/exception.py +0 -99
  462. py2docfx/venv/venv1/Lib/site-packages/win32com/server/factory.py +0 -26
  463. py2docfx/venv/venv1/Lib/site-packages/win32com/server/localserver.py +0 -53
  464. py2docfx/venv/venv1/Lib/site-packages/win32com/server/policy.py +0 -803
  465. py2docfx/venv/venv1/Lib/site-packages/win32com/server/register.py +0 -677
  466. py2docfx/venv/venv1/Lib/site-packages/win32com/server/util.py +0 -229
  467. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/PythonTools.py +0 -47
  468. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/__init__.py +0 -0
  469. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/dictionary.py +0 -133
  470. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/interp.py +0 -59
  471. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/perfmon.py +0 -36
  472. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/test_pycomtest.py +0 -181
  473. py2docfx/venv/venv1/Lib/site-packages/win32com/storagecon.py +0 -142
  474. py2docfx/venv/venv1/Lib/site-packages/win32com/test/GenTestScripts.py +0 -95
  475. py2docfx/venv/venv1/Lib/site-packages/win32com/test/__init__.py +0 -1
  476. py2docfx/venv/venv1/Lib/site-packages/win32com/test/daodump.py +0 -88
  477. py2docfx/venv/venv1/Lib/site-packages/win32com/test/errorSemantics.py +0 -243
  478. py2docfx/venv/venv1/Lib/site-packages/win32com/test/pippo_server.py +0 -96
  479. py2docfx/venv/venv1/Lib/site-packages/win32com/test/policySemantics.py +0 -115
  480. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testADOEvents.py +0 -100
  481. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAXScript.py +0 -44
  482. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAccess.py +0 -185
  483. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testArrays.py +0 -99
  484. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testClipboard.py +0 -169
  485. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testCollections.py +0 -159
  486. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testConversionErrors.py +0 -35
  487. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDCOM.py +0 -50
  488. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDates.py +0 -74
  489. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDictionary.py +0 -101
  490. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDynamic.py +0 -83
  491. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExchange.py +0 -121
  492. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExplorer.py +0 -139
  493. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGIT.py +0 -142
  494. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGatewayAddresses.py +0 -149
  495. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testIterators.py +0 -140
  496. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOffice.py +0 -184
  497. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOfficeEvents.py +0 -138
  498. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMarshal.py +0 -160
  499. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPersist.py +0 -227
  500. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPippo.py +0 -80
  501. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPyComTest.py +0 -918
  502. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testROT.py +0 -29
  503. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testServers.py +0 -51
  504. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testShell.py +0 -272
  505. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStorage.py +0 -88
  506. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStreams.py +0 -147
  507. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testWMI.py +0 -18
  508. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testall.py +0 -320
  509. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testmakepy.py +0 -54
  510. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvb.py +0 -583
  511. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvbscript_regexp.py +0 -40
  512. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testxslt.py +0 -34
  513. py2docfx/venv/venv1/Lib/site-packages/win32com/test/util.py +0 -262
  514. py2docfx/venv/venv1/Lib/site-packages/win32com/universal.py +0 -224
  515. py2docfx/venv/venv1/Lib/site-packages/win32com/util.py +0 -35
  516. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/__init__.py +0 -113
  517. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/adsicon.py +0 -340
  518. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/objectPicker.py +0 -68
  519. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/scp.py +0 -565
  520. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/search.py +0 -151
  521. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/test.py +0 -274
  522. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/__init__.py +0 -6
  523. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditSecurity.py +0 -229
  524. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditServiceSecurity.py +0 -219
  525. py2docfx/venv/venv1/Lib/site-packages/win32comext/axcontrol/__init__.py +0 -4
  526. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/__init__.py +0 -4
  527. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/adb.py +0 -467
  528. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/codecontainer.py +0 -279
  529. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/contexts.py +0 -58
  530. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/debugger.py +0 -238
  531. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/documents.py +0 -135
  532. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/dump.py +0 -57
  533. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/expressions.py +0 -212
  534. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/gateways.py +0 -583
  535. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/stackframe.py +0 -178
  536. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/util.py +0 -98
  537. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/__init__.py +0 -4
  538. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/asputil.py +0 -13
  539. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/__init__.py +0 -1
  540. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/debug.py +0 -223
  541. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/error.py +0 -262
  542. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/framework.py +0 -1291
  543. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pydumper.py +0 -78
  544. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript.py +0 -438
  545. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript_rexec.py +0 -54
  546. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/scriptdispatch.py +0 -103
  547. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/__init__.py +0 -0
  548. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/axsite.py +0 -145
  549. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/leakTest.py +0 -185
  550. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost.py +0 -240
  551. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost4Dbg.py +0 -83
  552. py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/__init__.py +0 -6
  553. py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/show_all_jobs.py +0 -48
  554. py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/test_bits.py +0 -119
  555. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/__init__.py +0 -4
  556. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/__init__.py +0 -1
  557. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_record.py +0 -60
  558. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_test.py +0 -402
  559. py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/__init__.py +0 -1
  560. py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/demo/filterDemo.py +0 -300
  561. py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/ifiltercon.py +0 -110
  562. py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/__init__.py +0 -4
  563. py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/inetcon.py +0 -261
  564. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/__init__.py +0 -21
  565. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/demos/mapisend.py +0 -98
  566. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/emsabtags.py +0 -875
  567. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapitags.py +0 -1023
  568. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapiutil.py +0 -211
  569. py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/__init__.py +0 -1
  570. py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/pscon.py +0 -838
  571. py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/test/testpropsys.py +0 -5
  572. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/__init__.py +0 -4
  573. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IActiveDesktop.py +0 -83
  574. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IFileOperationProgressSink.py +0 -179
  575. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IShellLinkDataList.py +0 -67
  576. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/ITransferAdviseSink.py +0 -93
  577. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IUniformResourceLocator.py +0 -56
  578. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/browse_for_folder.py +0 -45
  579. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/create_link.py +0 -73
  580. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/dump_link.py +0 -58
  581. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/explorer_browser.py +0 -143
  582. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/column_provider.py +0 -125
  583. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/context_menu.py +0 -122
  584. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/copy_hook.py +0 -84
  585. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/empty_volume_cache.py +0 -188
  586. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/folder_view.py +0 -866
  587. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/icon_handler.py +0 -81
  588. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/shell_view.py +0 -971
  589. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/shellexecuteex.py +0 -19
  590. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/viewstate.py +0 -68
  591. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/walk_shell_folders.py +0 -24
  592. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/shellcon.py +0 -1615
  593. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testSHFileOperation.py +0 -75
  594. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellFolder.py +0 -21
  595. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellItem.py +0 -69
  596. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/__init__.py +0 -6
  597. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask.py +0 -66
  598. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_1.py +0 -68
  599. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_2.py +0 -49
  600. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_localsystem.py +0 -3
  601. py2docfx/venv/venv1/Scripts/pywin32_postinstall.py +0 -733
  602. py2docfx/venv/venv1/Scripts/pywin32_testall.py +0 -120
  603. {py2docfx-0.1.15rc2025477.dist-info → py2docfx-0.1.16.dist-info}/WHEEL +0 -0
  604. {py2docfx-0.1.15rc2025477.dist-info → py2docfx-0.1.16.dist-info}/top_level.txt +0 -0
@@ -1,971 +0,0 @@
1
- # A sample shell namespace view
2
-
3
- # To demostrate:
4
- # * Execute this script to register the namespace.
5
- # * Open Windows Explorer, and locate the new "Python Path Shell Browser"
6
- # folder off "My Computer"
7
- # * Browse this tree - .py files are shown expandable, with classes and
8
- # methods selectable. Selecting a Python file, or a class/method, will
9
- # display the file using Scintilla.
10
- # Known problems:
11
- # * Classes and methods don't have icons - this is a demo, so we keep it small
12
- # See icon_handler.py for examples of how to work with icons.
13
- #
14
- #
15
- # Notes on PIDLs
16
- # PIDLS are complicated, but fairly well documented in MSDN. If you need to
17
- # do much with these shell extensions, you must understand their concept.
18
- # Here is a short-course, as it applies to this sample:
19
- # A PIDL identifies an item, much in the same way that a filename does
20
- # (however, the shell is not limited to displaying "files").
21
- # An "ItemID" is a single string, each being an item in the hierarchy.
22
- # A "PIDL" is a list of these strings.
23
- # All shell etc functions work with PIDLs, so even in the case where
24
- # an ItemID is conceptually used, a 1-item list is always used.
25
- # Conceptually, think of:
26
- # pidl = pathname.split("\\") # pidl is a list of "parent" items.
27
- # # each item is a string 'item id', but these are ever used directly
28
- # As there is no concept of passing a single item, to open a file using only
29
- # a relative filename, conceptually you would say:
30
- # open_file([filename]) # Pass a single-itemed relative "PIDL"
31
- # and continuing the analogy, a "listdir" type function would return a list
32
- # of single-itemed lists - each list containing the relative PIDL of the child.
33
- #
34
- # Each PIDL entry is a binary string, and may contain any character. For
35
- # PIDLs not created by you, they can not be interpreted - they are just
36
- # blobs. PIDLs created by you (ie, children of your IShellFolder) can
37
- # store and interpret the string however makes most sense for your application.
38
- # (but within PIDL rules - they must be persistable, etc)
39
- # There is no reason that pickled strings, for example, couldn't be used
40
- # as an EntryID.
41
- # This application takes a simple approach - each PIDL is a string of form
42
- # "directory\0directory_name", "file\0file_name" or
43
- # "object\0file_name\0class_name[.method_name"
44
- # The first string in each example is literal (ie, the word 'directory',
45
- # 'file' or 'object', and every other string is variable. We use '\0' as
46
- # a field sep just 'cos we can (and 'cos it can't possibly conflict with the
47
- # string content)
48
-
49
- import os
50
- import pyclbr
51
- import sys
52
-
53
- import commctrl
54
- import pythoncom
55
- import win32api
56
- import win32con
57
- import win32gui
58
- import win32gui_struct
59
- import winerror
60
- from pywin.scintilla import scintillacon
61
- from win32com.server.exception import COMException
62
- from win32com.server.util import NewEnum, wrap
63
- from win32com.shell import shell, shellcon
64
- from win32com.util import IIDToInterfaceName
65
-
66
- # Set this to 1 to cause debug version to be registered and used. A debug
67
- # version will spew output to win32traceutil.
68
- debug = 0
69
- if debug:
70
- import win32traceutil
71
-
72
- # markh is toying with an implementation that allows auto reload of a module
73
- # if this attribute exists.
74
- com_auto_reload = True
75
-
76
-
77
- # Helper function to get a system IShellFolder interface, and the PIDL within
78
- # that folder for an existing file/directory.
79
- def GetFolderAndPIDLForPath(filename):
80
- desktop = shell.SHGetDesktopFolder()
81
- info = desktop.ParseDisplayName(0, None, os.path.abspath(filename))
82
- cchEaten, pidl, attr = info
83
- # We must walk the ID list, looking for one child at a time.
84
- folder = desktop
85
- while len(pidl) > 1:
86
- this = pidl.pop(0)
87
- folder = folder.BindToObject([this], None, shell.IID_IShellFolder)
88
- # We are left with the pidl for the specific item. Leave it as
89
- # a list, so it remains a valid PIDL.
90
- return folder, pidl
91
-
92
-
93
- # A cache of pyclbr module objects, so we only parse a given filename once.
94
- clbr_modules = {} # Indexed by path, item is dict as returned from pyclbr
95
-
96
-
97
- def get_clbr_for_file(path):
98
- try:
99
- objects = clbr_modules[path]
100
- except KeyError:
101
- dir, filename = os.path.split(path)
102
- base, ext = os.path.splitext(filename)
103
- objects = pyclbr.readmodule_ex(base, [dir])
104
- clbr_modules[path] = objects
105
- return objects
106
-
107
-
108
- # Our COM interfaces.
109
-
110
-
111
- # Base class for a shell folder.
112
- # All child classes use a simple PIDL of the form:
113
- # "object_type\0object_name[\0extra ...]"
114
- class ShellFolderBase:
115
- _com_interfaces_ = [
116
- shell.IID_IBrowserFrameOptions,
117
- pythoncom.IID_IPersist,
118
- shell.IID_IPersistFolder,
119
- shell.IID_IShellFolder,
120
- ]
121
-
122
- _public_methods_ = (
123
- shellcon.IBrowserFrame_Methods
124
- + shellcon.IPersistFolder_Methods
125
- + shellcon.IShellFolder_Methods
126
- )
127
-
128
- def GetFrameOptions(self, mask):
129
- # print("GetFrameOptions", self, mask)
130
- return 0
131
-
132
- def ParseDisplayName(self, hwnd, reserved, displayName, attr):
133
- print("ParseDisplayName", displayName)
134
- # return cchEaten, pidl, attr
135
-
136
- def BindToStorage(self, pidl, bc, iid):
137
- print("BTS", iid, IIDToInterfaceName(iid))
138
-
139
- def BindToObject(self, pidl, bc, iid):
140
- # We may be passed a set of relative PIDLs here - ie
141
- # [pidl_of_dir, pidl_of_child_dir, pidl_of_file, pidl_of_function]
142
- # But each of our PIDLs keeps the fully qualified name anyway - so
143
- # just jump directly to the last.
144
- final_pidl = pidl[-1]
145
- typ, extra = final_pidl.split("\0", 1)
146
- if typ == "directory":
147
- klass = ShellFolderDirectory
148
- elif typ == "file":
149
- klass = ShellFolderFile
150
- elif typ == "object":
151
- klass = ShellFolderObject
152
- else:
153
- raise RuntimeError(f"What is {typ!r}")
154
- ret = wrap(klass(extra), iid, useDispatcher=(debug > 0))
155
- return ret
156
-
157
-
158
- # A ShellFolder for an object with CHILDREN on the file system
159
- # Note that this means our "File" folder is *not* a 'FileSystem' folder,
160
- # as it's children (functions and classes) are not on the file system.
161
- #
162
- class ShellFolderFileSystem(ShellFolderBase):
163
- def _GetFolderAndPIDLForPIDL(self, my_idl):
164
- typ, name = my_idl[0].split("\0")
165
- return GetFolderAndPIDLForPath(name)
166
-
167
- # Interface methods
168
- def CompareIDs(self, param, id1, id2):
169
- if id1 < id2:
170
- return -1
171
- if id1 == id2:
172
- return 0
173
- return 1
174
-
175
- def GetUIObjectOf(self, hwndOwner, pidls, iid, inout):
176
- # delegate to the shell.
177
- assert len(pidls) == 1, "oops - aren't expecting more than one!"
178
- pidl = pidls[0]
179
- folder, child_pidl = self._GetFolderAndPIDLForPIDL(pidl)
180
- try:
181
- inout, ret = folder.GetUIObjectOf(hwndOwner, [child_pidl], iid, inout, iid)
182
- except pythoncom.com_error as exc:
183
- raise COMException(hresult=exc.hresult)
184
- return inout, ret
185
- # return object of IID
186
-
187
- def GetDisplayNameOf(self, pidl, flags):
188
- # delegate to the shell.
189
- folder, child_pidl = self._GetFolderAndPIDLForPIDL(pidl)
190
- ret = folder.GetDisplayNameOf(child_pidl, flags)
191
- return ret
192
-
193
- def GetAttributesOf(self, pidls, attrFlags):
194
- ret_flags = -1
195
- for pidl in pidls:
196
- pidl = pidl[0] # ??
197
- typ, name = pidl.split("\0")
198
- flags = shellcon.SHGFI_ATTRIBUTES
199
- rc, info = shell.SHGetFileInfo(name, 0, flags)
200
- hIcon, iIcon, dwAttr, name, typeName = info
201
- # All our items, even files, have sub-items
202
- extras = (
203
- shellcon.SFGAO_HASSUBFOLDER
204
- | shellcon.SFGAO_FOLDER
205
- | shellcon.SFGAO_FILESYSANCESTOR
206
- | shellcon.SFGAO_BROWSABLE
207
- )
208
- ret_flags &= dwAttr | extras
209
- return ret_flags
210
-
211
-
212
- class ShellFolderDirectory(ShellFolderFileSystem):
213
- def __init__(self, path):
214
- self.path = os.path.abspath(path)
215
-
216
- def CreateViewObject(self, hwnd, iid):
217
- # delegate to the shell.
218
- folder, child_pidl = GetFolderAndPIDLForPath(self.path)
219
- return folder.CreateViewObject(hwnd, iid)
220
-
221
- def EnumObjects(self, hwndOwner, flags):
222
- pidls = []
223
- for fname in os.listdir(self.path):
224
- fqn = os.path.join(self.path, fname)
225
- if os.path.isdir(fqn):
226
- type_name = "directory"
227
- type_class = ShellFolderDirectory
228
- else:
229
- base, ext = os.path.splitext(fname)
230
- if ext in [".py", ".pyw"]:
231
- type_class = ShellFolderFile
232
- type_name = "file"
233
- else:
234
- type_class = None
235
- if type_class is not None:
236
- pidls.append([type_name + "\0" + fqn])
237
- return NewEnum(pidls, iid=shell.IID_IEnumIDList, useDispatcher=(debug > 0))
238
-
239
- def GetDisplayNameOf(self, pidl, flags):
240
- final_pidl = pidl[-1]
241
- full_fname = final_pidl.split("\0")[-1]
242
- return os.path.split(full_fname)[-1]
243
-
244
- def GetAttributesOf(self, pidls, attrFlags):
245
- return (
246
- shellcon.SFGAO_HASSUBFOLDER
247
- | shellcon.SFGAO_FOLDER
248
- | shellcon.SFGAO_FILESYSANCESTOR
249
- | shellcon.SFGAO_BROWSABLE
250
- )
251
-
252
-
253
- # As per comments above, even though this manages a file, it is *not* a
254
- # ShellFolderFileSystem, as the children are not on the file system.
255
- class ShellFolderFile(ShellFolderBase):
256
- def __init__(self, path):
257
- self.path = os.path.abspath(path)
258
-
259
- def EnumObjects(self, hwndOwner, flags):
260
- objects = get_clbr_for_file(self.path)
261
- pidls = []
262
- for name in objects:
263
- pidls.append(["object\0" + self.path + "\0" + name])
264
- return NewEnum(pidls, iid=shell.IID_IEnumIDList, useDispatcher=(debug > 0))
265
-
266
- def GetAttributesOf(self, pidls, attrFlags):
267
- ret_flags = -1
268
- for pidl in pidls:
269
- assert len(pidl) == 1, "Expecting relative pidls"
270
- pidl = pidl[0]
271
- typ, filename, obname = pidl.split("\0")
272
- obs = get_clbr_for_file(filename)
273
- ob = obs[obname]
274
- flags = (
275
- shellcon.SFGAO_BROWSABLE
276
- | shellcon.SFGAO_FOLDER
277
- | shellcon.SFGAO_FILESYSANCESTOR
278
- )
279
- if hasattr(ob, "methods"):
280
- flags |= shellcon.SFGAO_HASSUBFOLDER
281
- ret_flags &= flags
282
- return ret_flags
283
-
284
- def GetDisplayNameOf(self, pidl, flags):
285
- assert len(pidl) == 1, "Expecting relative PIDL"
286
- typ, fname, obname = pidl[0].split("\0")
287
- fqname = os.path.splitext(fname)[0] + "." + obname
288
- if flags & shellcon.SHGDN_INFOLDER:
289
- ret = obname
290
- else: # SHGDN_NORMAL is the default
291
- ret = fqname
292
- # No need to look at the SHGDN_FOR* modifiers.
293
- return ret
294
-
295
- def CreateViewObject(self, hwnd, iid):
296
- return wrap(ScintillaShellView(hwnd, self.path), iid, useDispatcher=debug > 0)
297
-
298
-
299
- # A ShellFolder for our Python objects
300
- class ShellFolderObject(ShellFolderBase):
301
- def __init__(self, details):
302
- self.path, details = details.split("\0")
303
- if details.find(".") > 0:
304
- self.class_name, self.method_name = details.split(".")
305
- else:
306
- self.class_name = details
307
- self.method_name = None
308
-
309
- def CreateViewObject(self, hwnd, iid):
310
- mod_objects = get_clbr_for_file(self.path)
311
- object = mod_objects[self.class_name]
312
- if self.method_name is None:
313
- lineno = object.lineno
314
- else:
315
- lineno = object.methods[self.method_name]
316
- return wrap(
317
- ScintillaShellView(hwnd, self.path, lineno),
318
- iid,
319
- useDispatcher=debug > 0,
320
- )
321
-
322
- def EnumObjects(self, hwndOwner, flags):
323
- assert self.method_name is None, "Should not be enuming methods!"
324
- mod_objects = get_clbr_for_file(self.path)
325
- my_objects = mod_objects[self.class_name]
326
- pidls = []
327
- for func_name in my_objects.methods:
328
- pidl = ["object\0" + self.path + "\0" + self.class_name + "." + func_name]
329
- pidls.append(pidl)
330
- return NewEnum(pidls, iid=shell.IID_IEnumIDList, useDispatcher=(debug > 0))
331
-
332
- def GetDisplayNameOf(self, pidl, flags):
333
- assert len(pidl) == 1, "Expecting relative PIDL"
334
- typ, fname, obname = pidl[0].split("\0")
335
- class_name, method_name = obname.split(".")
336
- fqname = os.path.splitext(fname)[0] + "." + obname
337
- if flags & shellcon.SHGDN_INFOLDER:
338
- ret = method_name
339
- else: # SHGDN_NORMAL is the default
340
- ret = fqname
341
- # No need to look at the SHGDN_FOR* modifiers.
342
- return ret
343
-
344
- def GetAttributesOf(self, pidls, attrFlags):
345
- ret_flags = -1
346
- for pidl in pidls:
347
- assert len(pidl) == 1, "Expecting relative pidls"
348
- flags = (
349
- shellcon.SFGAO_BROWSABLE
350
- | shellcon.SFGAO_FOLDER
351
- | shellcon.SFGAO_FILESYSANCESTOR
352
- )
353
- ret_flags &= flags
354
- return ret_flags
355
-
356
-
357
- # The "Root" folder of our namespace. As all children are directories,
358
- # it is derived from ShellFolderFileSystem
359
- # This is the only COM object actually registered and externally created.
360
- class ShellFolderRoot(ShellFolderFileSystem):
361
- _reg_progid_ = "Python.ShellExtension.Folder"
362
- _reg_desc_ = "Python Path Shell Browser"
363
- _reg_clsid_ = "{f6287035-3074-4cb5-a8a6-d3c80e206944}"
364
-
365
- def GetClassID(self):
366
- return self._reg_clsid_
367
-
368
- def Initialize(self, pidl):
369
- # This is the PIDL of us, as created by the shell. This is our
370
- # top-level ID. All other items under us have PIDLs defined
371
- # by us - see the notes at the top of the file.
372
- # print("Initialize called with pidl={pidl!r}")
373
- self.pidl = pidl
374
-
375
- def CreateViewObject(self, hwnd, iid):
376
- return wrap(FileSystemView(self, hwnd), iid, useDispatcher=debug > 0)
377
-
378
- def EnumObjects(self, hwndOwner, flags):
379
- items = [["directory\0" + p] for p in sys.path if os.path.isdir(p)]
380
- return NewEnum(items, iid=shell.IID_IEnumIDList, useDispatcher=(debug > 0))
381
-
382
- def GetDisplayNameOf(self, pidl, flags):
383
- ## return full path for sys.path dirs, since they don't appear under a parent folder
384
- final_pidl = pidl[-1]
385
- display_name = final_pidl.split("\0")[-1]
386
- return display_name
387
-
388
-
389
- # Simple shell view implementations
390
-
391
-
392
- # Uses a builtin listview control to display simple lists of directories
393
- # or filenames.
394
- class FileSystemView:
395
- _public_methods_ = shellcon.IShellView_Methods
396
- _com_interfaces_ = [
397
- pythoncom.IID_IOleWindow,
398
- shell.IID_IShellView,
399
- ]
400
-
401
- def __init__(self, folder, hwnd):
402
- self.hwnd_parent = hwnd # provided by explorer.
403
- self.hwnd = None # intermediate window for catching command notifications.
404
- self.hwnd_child = None # our ListView
405
- self.activate_state = None
406
- self.hmenu = None
407
- self.browser = None
408
- self.folder = folder
409
- self.children = None
410
-
411
- # IOleWindow
412
- def GetWindow(self):
413
- return self.hwnd
414
-
415
- def ContextSensitiveHelp(self, enter_mode):
416
- raise COMException(hresult=winerror.E_NOTIMPL)
417
-
418
- # IShellView
419
- def CreateViewWindow(self, prev, settings, browser, rect):
420
- print("FileSystemView.CreateViewWindow", prev, settings, browser, rect)
421
- self.cur_foldersettings = settings
422
- self.browser = browser
423
- self._CreateMainWindow(prev, settings, browser, rect)
424
- self._CreateChildWindow(prev)
425
-
426
- # This isn't part of the sample, but the most convenient place to
427
- # test/demonstrate how you can get an IShellBrowser from a HWND
428
- # (but ONLY when you are in the same process as the IShellBrowser!)
429
- # Obviously it is not necessary here - we already have the browser!
430
- browser_ad = win32gui.SendMessage(self.hwnd_parent, win32con.WM_USER + 7, 0, 0)
431
- browser_ob = pythoncom.ObjectFromAddress(browser_ad, shell.IID_IShellBrowser)
432
- assert browser == browser_ob
433
- # and make a call on the object to prove it doesn't die :)
434
- assert browser.QueryActiveShellView() == browser_ob.QueryActiveShellView()
435
-
436
- def _CreateMainWindow(self, prev, settings, browser, rect):
437
- # Creates a parent window that hosts the view window. This window
438
- # gets the control notifications etc sent from the child.
439
- style = win32con.WS_CHILD | win32con.WS_VISIBLE #
440
- wclass_name = "ShellViewDemo_DefView"
441
- # Register the Window class.
442
- wc = win32gui.WNDCLASS()
443
- wc.hInstance = win32gui.dllhandle
444
- wc.lpszClassName = wclass_name
445
- wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
446
- try:
447
- win32gui.RegisterClass(wc)
448
- except win32gui.error as details:
449
- # Should only happen when this module is reloaded
450
- if details[0] != winerror.ERROR_CLASS_ALREADY_EXISTS:
451
- raise
452
-
453
- message_map = {
454
- win32con.WM_DESTROY: self.OnDestroy,
455
- win32con.WM_COMMAND: self.OnCommand,
456
- win32con.WM_NOTIFY: self.OnNotify,
457
- win32con.WM_CONTEXTMENU: self.OnContextMenu,
458
- win32con.WM_SIZE: self.OnSize,
459
- }
460
-
461
- self.hwnd = win32gui.CreateWindow(
462
- wclass_name,
463
- "",
464
- style,
465
- rect[0],
466
- rect[1],
467
- rect[2] - rect[0],
468
- rect[3] - rect[1],
469
- self.hwnd_parent,
470
- 0,
471
- win32gui.dllhandle,
472
- None,
473
- )
474
- win32gui.SetWindowLong(self.hwnd, win32con.GWL_WNDPROC, message_map)
475
- print("View 's hwnd is", self.hwnd)
476
- return self.hwnd
477
-
478
- def _CreateChildWindow(self, prev):
479
- # Creates the list view window.
480
- assert self.hwnd_child is None, "already have a window"
481
- assert self.cur_foldersettings is not None, "no settings"
482
- style = (
483
- win32con.WS_CHILD
484
- | win32con.WS_VISIBLE
485
- | win32con.WS_BORDER
486
- | commctrl.LVS_SHAREIMAGELISTS
487
- | commctrl.LVS_EDITLABELS
488
- )
489
-
490
- view_mode, view_flags = self.cur_foldersettings
491
- if view_mode == shellcon.FVM_ICON:
492
- style |= commctrl.LVS_ICON | commctrl.LVS_AUTOARRANGE
493
- elif view_mode == shellcon.FVM_SMALLICON:
494
- style |= commctrl.LVS_SMALLICON | commctrl.LVS_AUTOARRANGE
495
- elif view_mode == shellcon.FVM_LIST:
496
- style |= commctrl.LVS_LIST | commctrl.LVS_AUTOARRANGE
497
- elif view_mode == shellcon.FVM_DETAILS:
498
- style |= commctrl.LVS_REPORT | commctrl.LVS_AUTOARRANGE
499
- else:
500
- # XP 'thumbnails' etc
501
- view_mode = shellcon.FVM_DETAILS
502
- # Default to 'report'
503
- style |= commctrl.LVS_REPORT | commctrl.LVS_AUTOARRANGE
504
-
505
- for f_flag, l_flag in [
506
- (shellcon.FWF_SINGLESEL, commctrl.LVS_SINGLESEL),
507
- (shellcon.FWF_ALIGNLEFT, commctrl.LVS_ALIGNLEFT),
508
- (shellcon.FWF_SHOWSELALWAYS, commctrl.LVS_SHOWSELALWAYS),
509
- ]:
510
- if view_flags & f_flag:
511
- style |= l_flag
512
-
513
- self.hwnd_child = win32gui.CreateWindowEx(
514
- win32con.WS_EX_CLIENTEDGE,
515
- "SysListView32",
516
- None,
517
- style,
518
- 0,
519
- 0,
520
- 0,
521
- 0,
522
- self.hwnd,
523
- 1000,
524
- 0,
525
- None,
526
- )
527
-
528
- cr = win32gui.GetClientRect(self.hwnd)
529
- win32gui.MoveWindow(self.hwnd_child, 0, 0, cr[2] - cr[0], cr[3] - cr[1], True)
530
-
531
- # Setup the columns for the view.
532
- lvc, extras = win32gui_struct.PackLVCOLUMN(
533
- fmt=commctrl.LVCFMT_LEFT, subItem=1, text="Name", cx=300
534
- )
535
- win32gui.SendMessage(self.hwnd_child, commctrl.LVM_INSERTCOLUMN, 0, lvc)
536
-
537
- lvc, extras = win32gui_struct.PackLVCOLUMN(
538
- fmt=commctrl.LVCFMT_RIGHT, subItem=1, text="Exists", cx=50
539
- )
540
- win32gui.SendMessage(self.hwnd_child, commctrl.LVM_INSERTCOLUMN, 1, lvc)
541
- # and fill it with the content
542
- self.Refresh()
543
-
544
- def GetCurrentInfo(self):
545
- return self.cur_foldersettings
546
-
547
- def UIActivate(self, activate_state):
548
- print("OnActivate")
549
-
550
- def _OnActivate(self, activate_state):
551
- if self.activate_state == activate_state:
552
- return
553
- self._OnDeactivate() # restore menu's first, if necessary.
554
- if activate_state != shellcon.SVUIA_DEACTIVATE:
555
- assert self.hmenu is None, "Should have destroyed it!"
556
- self.hmenu = win32gui.CreateMenu()
557
- widths = 0, 0, 0, 0, 0, 0
558
- # Ask explorer to add its standard items.
559
- self.browser.InsertMenusSB(self.hmenu, widths)
560
- # Merge with these standard items
561
- self._MergeMenus(activate_state)
562
- self.browser.SetMenuSB(self.hmenu, 0, self.hwnd)
563
- self.activate_state = activate_state
564
-
565
- def _OnDeactivate(self):
566
- if self.browser is not None and self.hmenu is not None:
567
- self.browser.SetMenuSB(0, 0, 0)
568
- self.browser.RemoveMenusSB(self.hmenu)
569
- win32gui.DestroyMenu(self.hmenu)
570
- self.hmenu = None
571
- self.hsubmenus = None
572
- self.activate_state = shellcon.SVUIA_DEACTIVATE
573
-
574
- def _MergeMenus(self, activate_state):
575
- # Merge the operations we support into the top-level menus.
576
- # NOTE: This function it *not* called each time the selection changes.
577
- # SVUIA_ACTIVATE_FOCUS really means "have a selection?"
578
- have_sel = activate_state == shellcon.SVUIA_ACTIVATE_FOCUS
579
- # only do "file" menu here, and only 1 item on it!
580
- mid = shellcon.FCIDM_MENU_FILE
581
- # Get the hmenu for the menu
582
- buf, extras = win32gui_struct.EmptyMENUITEMINFO(win32con.MIIM_SUBMENU)
583
- win32gui.GetMenuItemInfo(self.hmenu, mid, False, buf)
584
- data = win32gui_struct.UnpackMENUITEMINFO(buf)
585
- submenu = data[3]
586
- print("Do someting with the file menu!")
587
-
588
- def Refresh(self):
589
- stateMask = commctrl.LVIS_SELECTED | commctrl.LVIS_DROPHILITED
590
- state = 0
591
- self.children = []
592
- # Enumerate and store the child PIDLs
593
- for cid in self.folder.EnumObjects(self.hwnd, 0):
594
- self.children.append(cid)
595
-
596
- for row_index, data in enumerate(self.children):
597
- assert len(data) == 1, "expecting just a child PIDL"
598
- typ, path = data[0].split("\0")
599
- desc = os.path.exists(path) and "Yes" or "No"
600
- prop_vals = (path, desc)
601
- # first col
602
- data, extras = win32gui_struct.PackLVITEM(
603
- item=row_index,
604
- subItem=0,
605
- text=prop_vals[0],
606
- state=state,
607
- stateMask=stateMask,
608
- )
609
- win32gui.SendMessage(
610
- self.hwnd_child, commctrl.LVM_INSERTITEM, row_index, data
611
- )
612
- # rest of the cols.
613
- col_index = 1
614
- for prop_val in prop_vals[1:]:
615
- data, extras = win32gui_struct.PackLVITEM(
616
- item=row_index, subItem=col_index, text=prop_val
617
- )
618
-
619
- win32gui.SendMessage(self.hwnd_child, commctrl.LVM_SETITEM, 0, data)
620
- col_index += 1
621
-
622
- def SelectItem(self, pidl, flag):
623
- # For the sake of brevity, we don't implement this yet.
624
- # You would need to locate the index of the item in the shell-view
625
- # with that PIDL, then ask the list-view to select it.
626
- print("Please implement SelectItem for PIDL", pidl)
627
-
628
- def GetItemObject(self, item_num, iid):
629
- raise COMException(hresult=winerror.E_NOTIMPL)
630
-
631
- def TranslateAccelerator(self, msg):
632
- return winerror.S_FALSE
633
-
634
- def DestroyViewWindow(self):
635
- win32gui.DestroyWindow(self.hwnd)
636
- self.hwnd = None
637
- print("Destroyed view window")
638
-
639
- # Message handlers.
640
- def OnDestroy(self, hwnd, msg, wparam, lparam):
641
- print("OnDestory")
642
-
643
- def OnCommand(self, hwnd, msg, wparam, lparam):
644
- print("OnCommand")
645
-
646
- def OnNotify(self, hwnd, msg, wparam, lparam):
647
- hwndFrom, idFrom, code = win32gui_struct.UnpackWMNOTIFY(lparam)
648
- # print("OnNotify code=0x%x (0x%x, 0x%x)" % (code, wparam, lparam))
649
- if code == commctrl.NM_SETFOCUS:
650
- # Control got focus - Explorer may not know - tell it
651
- if self.browser is not None:
652
- self.browser.OnViewWindowActive(None)
653
- # And do our menu thang
654
- self._OnActivate(shellcon.SVUIA_ACTIVATE_FOCUS)
655
- elif code == commctrl.NM_KILLFOCUS:
656
- self._OnDeactivate()
657
- elif code == commctrl.NM_DBLCLK:
658
- # This DblClick implementation leaves a little to be desired :)
659
- # It demonstrates some useful concepts, such as asking the
660
- # folder for its context-menu and invoking a command from it.
661
- # However, as our folder delegates IContextMenu to the shell
662
- # itself, the end result is that the folder is opened in
663
- # its "normal" place in Windows explorer rather than inside
664
- # our shell-extension.
665
- # Determine the selected items.
666
- sel = []
667
- n = -1
668
- while 1:
669
- n = win32gui.SendMessage(
670
- self.hwnd_child, commctrl.LVM_GETNEXTITEM, n, commctrl.LVNI_SELECTED
671
- )
672
- if n == -1:
673
- break
674
- sel.append(self.children[n][-1:])
675
- print("Selection is", sel)
676
- hmenu = win32gui.CreateMenu()
677
- try:
678
- # Get the IContextMenu for the items.
679
- inout, cm = self.folder.GetUIObjectOf(
680
- self.hwnd_parent, sel, shell.IID_IContextMenu, 0
681
- )
682
-
683
- # As per 'Q179911', we need to determine if the default operation
684
- # should be 'open' or 'explore'
685
- flags = shellcon.CMF_DEFAULTONLY
686
- try:
687
- self.browser.GetControlWindow(shellcon.FCW_TREE)
688
- flags |= shellcon.CMF_EXPLORE
689
- except pythoncom.com_error:
690
- pass
691
- # *sob* - delegating to the shell does work - but lands us
692
- # in the original location. Q179911 also shows that
693
- # ShellExecuteEx should work - but I can't make it work as
694
- # described (XP: function call succeeds, but another thread
695
- # shows a dialog with text of E_INVALID_PARAM, and new
696
- # Explorer window opens with desktop view. Vista: function
697
- # call succeeds, but no window created at all.
698
- # On Vista, I'd love to get an IExplorerBrowser interface
699
- # from the shell, but a QI fails, and although the
700
- # IShellBrowser does appear to support IServiceProvider, I
701
- # still can't get it
702
- if 0:
703
- id_cmd_first = 1 # TrackPopupMenu makes it hard to use 0
704
- cm.QueryContextMenu(hmenu, 0, id_cmd_first, -1, flags)
705
- # Find the default item in the returned menu.
706
- cmd = win32gui.GetMenuDefaultItem(hmenu, False, 0)
707
- if cmd == -1:
708
- print("Oops: _doDefaultActionFor found no default menu")
709
- else:
710
- ci = (
711
- 0,
712
- self.hwnd_parent,
713
- cmd - id_cmd_first,
714
- None,
715
- None,
716
- 0,
717
- 0,
718
- 0,
719
- )
720
- cm.InvokeCommand(ci)
721
- else:
722
- rv = shell.ShellExecuteEx(
723
- hwnd=self.hwnd_parent,
724
- nShow=win32con.SW_NORMAL,
725
- lpClass="folder",
726
- lpVerb="explore",
727
- lpIDList=sel[0],
728
- )
729
- print("ShellExecuteEx returned", rv)
730
- finally:
731
- win32gui.DestroyMenu(hmenu)
732
-
733
- def OnContextMenu(self, hwnd, msg, wparam, lparam):
734
- # Get the selected items.
735
- pidls = []
736
- n = -1
737
- while 1:
738
- n = win32gui.SendMessage(
739
- self.hwnd_child, commctrl.LVM_GETNEXTITEM, n, commctrl.LVNI_SELECTED
740
- )
741
- if n == -1:
742
- break
743
- pidls.append(self.children[n][-1:])
744
-
745
- spt = win32api.GetCursorPos()
746
- if not pidls:
747
- print("Ignoring background click")
748
- return
749
- # Get the IContextMenu for the items.
750
- inout, cm = self.folder.GetUIObjectOf(
751
- self.hwnd_parent, pidls, shell.IID_IContextMenu, 0
752
- )
753
- hmenu = win32gui.CreatePopupMenu()
754
- sel = None
755
- # As per 'Q179911', we need to determine if the default operation
756
- # should be 'open' or 'explore'
757
- try:
758
- flags = 0
759
- try:
760
- self.browser.GetControlWindow(shellcon.FCW_TREE)
761
- flags |= shellcon.CMF_EXPLORE
762
- except pythoncom.com_error:
763
- pass
764
- id_cmd_first = 1 # TrackPopupMenu makes it hard to use 0
765
- cm.QueryContextMenu(hmenu, 0, id_cmd_first, -1, flags)
766
- tpm_flags = (
767
- win32con.TPM_LEFTALIGN
768
- | win32con.TPM_RETURNCMD
769
- | win32con.TPM_RIGHTBUTTON
770
- )
771
- sel = win32gui.TrackPopupMenu(
772
- hmenu, tpm_flags, spt[0], spt[1], 0, self.hwnd, None
773
- )
774
- print("TrackPopupMenu returned", sel)
775
- finally:
776
- win32gui.DestroyMenu(hmenu)
777
- if sel:
778
- ci = 0, self.hwnd_parent, sel - id_cmd_first, None, None, 0, 0, 0
779
- cm.InvokeCommand(ci)
780
-
781
- def OnSize(self, hwnd, msg, wparam, lparam):
782
- # print("OnSize", self.hwnd_child, win32api.LOWORD(lparam), win32api.HIWORD(lparam))
783
- if self.hwnd_child is not None:
784
- x = win32api.LOWORD(lparam)
785
- y = win32api.HIWORD(lparam)
786
- win32gui.MoveWindow(self.hwnd_child, 0, 0, x, y, False)
787
-
788
-
789
- # This uses scintilla to display a filename, and optionally jump to a line
790
- # number.
791
- class ScintillaShellView:
792
- _public_methods_ = shellcon.IShellView_Methods
793
- _com_interfaces_ = [
794
- pythoncom.IID_IOleWindow,
795
- shell.IID_IShellView,
796
- ]
797
-
798
- def __init__(self, hwnd, filename, lineno=None):
799
- self.filename = filename
800
- self.lineno = lineno
801
- self.hwnd_parent = hwnd
802
- self.hwnd = None
803
-
804
- def _SendSci(self, msg, wparam=0, lparam=0):
805
- return win32gui.SendMessage(self.hwnd, msg, wparam, lparam)
806
-
807
- # IShellView
808
- def CreateViewWindow(self, prev, settings, browser, rect):
809
- print("ScintillaShellView.CreateViewWindow", prev, settings, browser, rect)
810
- # Make sure scintilla.dll is loaded. If not, find it on sys.path
811
- # (which it generally is for Pythonwin)
812
- try:
813
- win32api.GetModuleHandle("Scintilla.dll")
814
- except win32api.error:
815
- for p in sys.path:
816
- fname = os.path.join(p, "Scintilla.dll")
817
- if not os.path.isfile(fname):
818
- fname = os.path.join(p, "Build", "Scintilla.dll")
819
- if os.path.isfile(fname):
820
- win32api.LoadLibrary(fname)
821
- break
822
- else:
823
- raise RuntimeError("Can't find scintilla!")
824
-
825
- style = (
826
- win32con.WS_CHILD
827
- | win32con.WS_VSCROLL
828
- | win32con.WS_HSCROLL
829
- | win32con.WS_CLIPCHILDREN
830
- | win32con.WS_VISIBLE
831
- )
832
- self.hwnd = win32gui.CreateWindow(
833
- "Scintilla",
834
- "Scintilla",
835
- style,
836
- rect[0],
837
- rect[1],
838
- rect[2] - rect[0],
839
- rect[3] - rect[1],
840
- self.hwnd_parent,
841
- 1000,
842
- 0,
843
- None,
844
- )
845
-
846
- message_map = {
847
- win32con.WM_SIZE: self.OnSize,
848
- }
849
- # win32gui.SetWindowLong(self.hwnd, win32con.GWL_WNDPROC, message_map)
850
-
851
- file_data = open(self.filename, "U").read()
852
-
853
- self._SetupLexer()
854
- self._SendSci(scintillacon.SCI_ADDTEXT, len(file_data), file_data)
855
- if self.lineno is not None:
856
- self._SendSci(scintillacon.SCI_GOTOLINE, self.lineno)
857
- print("Scintilla's hwnd is", self.hwnd)
858
-
859
- def _SetupLexer(self):
860
- h = self.hwnd
861
- styles = [
862
- ((0, 0, 200, 0, 0x808080), None, scintillacon.SCE_P_DEFAULT),
863
- ((0, 2, 200, 0, 0x008000), None, scintillacon.SCE_P_COMMENTLINE),
864
- ((0, 2, 200, 0, 0x808080), None, scintillacon.SCE_P_COMMENTBLOCK),
865
- ((0, 0, 200, 0, 0x808000), None, scintillacon.SCE_P_NUMBER),
866
- ((0, 0, 200, 0, 0x008080), None, scintillacon.SCE_P_STRING),
867
- ((0, 0, 200, 0, 0x008080), None, scintillacon.SCE_P_CHARACTER),
868
- ((0, 0, 200, 0, 0x008080), None, scintillacon.SCE_P_TRIPLE),
869
- ((0, 0, 200, 0, 0x008080), None, scintillacon.SCE_P_TRIPLEDOUBLE),
870
- ((0, 0, 200, 0, 0x000000), 0x008080, scintillacon.SCE_P_STRINGEOL),
871
- ((0, 1, 200, 0, 0x800000), None, scintillacon.SCE_P_WORD),
872
- ((0, 1, 200, 0, 0xFF0000), None, scintillacon.SCE_P_CLASSNAME),
873
- ((0, 1, 200, 0, 0x808000), None, scintillacon.SCE_P_DEFNAME),
874
- ((0, 0, 200, 0, 0x000000), None, scintillacon.SCE_P_OPERATOR),
875
- ((0, 0, 200, 0, 0x000000), None, scintillacon.SCE_P_IDENTIFIER),
876
- ]
877
- self._SendSci(scintillacon.SCI_SETLEXER, scintillacon.SCLEX_PYTHON, 0)
878
- self._SendSci(scintillacon.SCI_SETSTYLEBITS, 5)
879
- baseFormat = (-402653169, 0, 200, 0, 0, 0, 49, "Courier New")
880
- for f, bg, stylenum in styles:
881
- self._SendSci(scintillacon.SCI_STYLESETFORE, stylenum, f[4])
882
- self._SendSci(scintillacon.SCI_STYLESETFONT, stylenum, baseFormat[7])
883
- if f[1] & 1:
884
- self._SendSci(scintillacon.SCI_STYLESETBOLD, stylenum, 1)
885
- else:
886
- self._SendSci(scintillacon.SCI_STYLESETBOLD, stylenum, 0)
887
- if f[1] & 2:
888
- self._SendSci(scintillacon.SCI_STYLESETITALIC, stylenum, 1)
889
- else:
890
- self._SendSci(scintillacon.SCI_STYLESETITALIC, stylenum, 0)
891
- self._SendSci(
892
- scintillacon.SCI_STYLESETSIZE, stylenum, int(baseFormat[2] / 20)
893
- )
894
- if bg is not None:
895
- self._SendSci(scintillacon.SCI_STYLESETBACK, stylenum, bg)
896
- self._SendSci(
897
- scintillacon.SCI_STYLESETEOLFILLED, stylenum, 1
898
- ) # Only needed for unclosed strings.
899
-
900
- # IOleWindow
901
- def GetWindow(self):
902
- return self.hwnd
903
-
904
- def UIActivate(self, activate_state):
905
- print("OnActivate")
906
-
907
- def DestroyViewWindow(self):
908
- win32gui.DestroyWindow(self.hwnd)
909
- self.hwnd = None
910
- print("Destroyed scintilla window")
911
-
912
- def TranslateAccelerator(self, msg):
913
- return winerror.S_FALSE
914
-
915
- def OnSize(self, hwnd, msg, wparam, lparam):
916
- x = win32api.LOWORD(lparam)
917
- y = win32api.HIWORD(lparam)
918
- win32gui.MoveWindow(self.hwnd, 0, 0, x, y, False)
919
-
920
-
921
- def DllRegisterServer():
922
- import winreg
923
-
924
- key = winreg.CreateKey(
925
- winreg.HKEY_LOCAL_MACHINE,
926
- "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
927
- "Explorer\\Desktop\\Namespace\\" + ShellFolderRoot._reg_clsid_,
928
- )
929
- winreg.SetValueEx(key, None, 0, winreg.REG_SZ, ShellFolderRoot._reg_desc_)
930
- # And special shell keys under our CLSID
931
- key = winreg.CreateKey(
932
- winreg.HKEY_CLASSES_ROOT,
933
- "CLSID\\" + ShellFolderRoot._reg_clsid_ + "\\ShellFolder",
934
- )
935
- # 'Attributes' is an int stored as a binary! use struct
936
- attr = (
937
- shellcon.SFGAO_FOLDER | shellcon.SFGAO_HASSUBFOLDER | shellcon.SFGAO_BROWSABLE
938
- )
939
- import struct
940
-
941
- s = struct.pack("i", attr)
942
- winreg.SetValueEx(key, "Attributes", 0, winreg.REG_BINARY, s)
943
- print(ShellFolderRoot._reg_desc_, "registration complete.")
944
-
945
-
946
- def DllUnregisterServer():
947
- import winreg
948
-
949
- try:
950
- key = winreg.DeleteKey(
951
- winreg.HKEY_LOCAL_MACHINE,
952
- "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\"
953
- "Explorer\\Desktop\\Namespace\\" + ShellFolderRoot._reg_clsid_,
954
- )
955
- except OSError as details:
956
- import errno
957
-
958
- if details.errno != errno.ENOENT:
959
- raise
960
- print(ShellFolderRoot._reg_desc_, "unregistration complete.")
961
-
962
-
963
- if __name__ == "__main__":
964
- from win32com.server import register
965
-
966
- register.UseCommandLine(
967
- ShellFolderRoot,
968
- debug=debug,
969
- finalize_register=DllRegisterServer,
970
- finalize_unregister=DllUnregisterServer,
971
- )