py2docfx 0.1.15.dev2025501__py3-none-any.whl → 0.1.15.dev2038808__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 (597) hide show
  1. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_core_metadata.py +21 -5
  2. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +2 -0
  3. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/ccompiler.py +5 -2
  4. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/__init__.py +27 -8
  5. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build.py +1 -6
  6. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_clib.py +1 -9
  7. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_ext.py +1 -8
  8. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/check.py +1 -1
  9. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
  10. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/install.py +8 -17
  11. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compat/numpy.py +2 -0
  12. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +8 -5
  13. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +1 -1
  14. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +15 -1
  15. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/dist.py +2 -1
  16. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -10
  17. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +60 -5
  18. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/unixccompiler.py +6 -0
  19. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/util.py +7 -6
  20. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_normalization.py +29 -0
  21. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +1 -1
  22. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py +613 -0
  23. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +2 -2
  24. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +25 -594
  25. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +6 -6
  26. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +282 -223
  27. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +22 -9
  28. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +16 -13
  29. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -9
  30. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +40 -9
  31. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +6 -2
  32. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +48 -11
  33. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +31 -1
  34. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +222 -129
  35. py2docfx/venv/basevenv/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +30 -3
  36. py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +115 -9
  37. py2docfx/venv/basevenv/Lib/site-packages/setuptools/msvc.py +12 -3
  38. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +246 -13
  39. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +93 -8
  40. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_meta.py +17 -4
  41. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_core_metadata.py +45 -0
  42. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_egg_info.py +24 -4
  43. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_sdist.py +13 -1
  44. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +1 -1
  45. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +4 -4
  46. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +4 -4
  47. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +4 -4
  48. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_database.py +22 -4
  49. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +82 -35
  50. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +4 -4
  51. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +4 -4
  52. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +4 -4
  53. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/builder.py +4 -3
  54. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/containers.py +13 -0
  55. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/decoder.py +62 -115
  56. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_edition_defaults.py +1 -1
  57. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_message.py +15 -18
  58. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/testing_refleaks.py +4 -1
  59. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/type_checkers.py +5 -0
  60. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/well_known_types.py +3 -3
  61. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/json_format.py +25 -9
  62. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message.py +26 -0
  63. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message_factory.py +0 -63
  64. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto.py +38 -1
  65. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto_text.py +129 -0
  66. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/reflection.py +0 -49
  67. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +3 -3
  68. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +4 -4
  69. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +4 -4
  70. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/symbol_database.py +0 -18
  71. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_format.py +8 -3
  72. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +4 -4
  73. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +4 -4
  74. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/unknown_fields.py +3 -4
  75. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +4 -4
  76. py2docfx/venv/venv1/Lib/site-packages/msal/__init__.py +1 -1
  77. py2docfx/venv/venv1/Lib/site-packages/msal/application.py +51 -17
  78. py2docfx/venv/venv1/Lib/site-packages/msal/broker.py +18 -4
  79. py2docfx/venv/venv1/Lib/site-packages/msal/cloudshell.py +5 -1
  80. py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +5 -4
  81. py2docfx/venv/venv1/Lib/site-packages/msal/sku.py +6 -0
  82. py2docfx/venv/venv1/Lib/site-packages/msal/token_cache.py +31 -10
  83. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/__init__.py +2 -3
  84. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/cache_lock.py +4 -1
  85. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/filelock.py +62 -0
  86. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/libsecret.py +1 -1
  87. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/token_cache.py +7 -1
  88. py2docfx/venv/venv1/Lib/site-packages/setuptools/_core_metadata.py +21 -5
  89. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +2 -0
  90. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/ccompiler.py +5 -2
  91. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/__init__.py +27 -8
  92. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build.py +1 -6
  93. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_clib.py +1 -9
  94. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_ext.py +1 -8
  95. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/check.py +1 -1
  96. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/config.py +0 -2
  97. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/install.py +8 -17
  98. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compat/numpy.py +2 -0
  99. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +8 -5
  100. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +1 -1
  101. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +15 -1
  102. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/dist.py +2 -1
  103. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -10
  104. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +60 -5
  105. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/unixccompiler.py +6 -0
  106. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/util.py +7 -6
  107. py2docfx/venv/venv1/Lib/site-packages/setuptools/_normalization.py +29 -0
  108. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +1 -1
  109. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/_bdist_wheel.py +613 -0
  110. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +2 -2
  111. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +25 -594
  112. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +6 -6
  113. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +282 -223
  114. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +22 -9
  115. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +16 -13
  116. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -9
  117. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +40 -9
  118. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +6 -2
  119. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +48 -11
  120. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +31 -1
  121. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +222 -129
  122. py2docfx/venv/venv1/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +30 -3
  123. py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +115 -9
  124. py2docfx/venv/venv1/Lib/site-packages/setuptools/msvc.py +12 -3
  125. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +246 -13
  126. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +93 -8
  127. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_meta.py +17 -4
  128. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_core_metadata.py +45 -0
  129. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_egg_info.py +24 -4
  130. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_sdist.py +13 -1
  131. {py2docfx-0.1.15.dev2025501.dist-info → py2docfx-0.1.15.dev2038808.dist-info}/METADATA +1 -1
  132. {py2docfx-0.1.15.dev2025501.dist-info → py2docfx-0.1.15.dev2038808.dist-info}/RECORD +134 -590
  133. py2docfx/venv/venv1/Lib/site-packages/adodbapi/__init__.py +0 -82
  134. py2docfx/venv/venv1/Lib/site-packages/adodbapi/ado_consts.py +0 -283
  135. py2docfx/venv/venv1/Lib/site-packages/adodbapi/adodbapi.py +0 -1153
  136. py2docfx/venv/venv1/Lib/site-packages/adodbapi/apibase.py +0 -723
  137. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_print.py +0 -72
  138. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_table_names.py +0 -21
  139. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_read.py +0 -41
  140. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_write.py +0 -41
  141. py2docfx/venv/venv1/Lib/site-packages/adodbapi/is64bit.py +0 -34
  142. py2docfx/venv/venv1/Lib/site-packages/adodbapi/process_connect_string.py +0 -137
  143. py2docfx/venv/venv1/Lib/site-packages/adodbapi/schema_table.py +0 -16
  144. py2docfx/venv/venv1/Lib/site-packages/adodbapi/setup.py +0 -68
  145. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitest.py +0 -1547
  146. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitestconfig.py +0 -184
  147. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/dbapi20.py +0 -879
  148. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/is64bit.py +0 -34
  149. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/setuptestframework.py +0 -98
  150. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/test_adodbapi_dbapi20.py +0 -195
  151. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/tryconnection.py +0 -30
  152. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/_parameterized.py +0 -420
  153. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/service.py +0 -213
  154. py2docfx/venv/venv1/Lib/site-packages/isapi/__init__.py +0 -39
  155. py2docfx/venv/venv1/Lib/site-packages/isapi/install.py +0 -809
  156. py2docfx/venv/venv1/Lib/site-packages/isapi/isapicon.py +0 -121
  157. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/advanced.py +0 -218
  158. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector.py +0 -116
  159. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_asynch.py +0 -85
  160. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_with_filter.py +0 -162
  161. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/test.py +0 -195
  162. py2docfx/venv/venv1/Lib/site-packages/isapi/simple.py +0 -73
  163. py2docfx/venv/venv1/Lib/site-packages/isapi/test/extension_simple.py +0 -114
  164. py2docfx/venv/venv1/Lib/site-packages/isapi/threaded_extension.py +0 -191
  165. py2docfx/venv/venv1/Lib/site-packages/portalocker/__about__.py +0 -6
  166. py2docfx/venv/venv1/Lib/site-packages/portalocker/__init__.py +0 -79
  167. py2docfx/venv/venv1/Lib/site-packages/portalocker/__main__.py +0 -122
  168. py2docfx/venv/venv1/Lib/site-packages/portalocker/constants.py +0 -59
  169. py2docfx/venv/venv1/Lib/site-packages/portalocker/exceptions.py +0 -27
  170. py2docfx/venv/venv1/Lib/site-packages/portalocker/portalocker.py +0 -154
  171. py2docfx/venv/venv1/Lib/site-packages/portalocker/redis.py +0 -236
  172. py2docfx/venv/venv1/Lib/site-packages/portalocker/utils.py +0 -569
  173. py2docfx/venv/venv1/Lib/site-packages/pythoncom.py +0 -4
  174. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/basictimerapp.py +0 -258
  175. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/customprint.py +0 -183
  176. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/demoutils.py +0 -63
  177. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dlgappdemo.py +0 -51
  178. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dojobapp.py +0 -71
  179. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/helloapp.py +0 -53
  180. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/cmdserver.py +0 -113
  181. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/createwin.py +0 -114
  182. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/demoutils.py +0 -65
  183. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dibdemo.py +0 -73
  184. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dlgtest.py +0 -145
  185. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dyndlg.py +0 -104
  186. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/fontdemo.py +0 -85
  187. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/guidemo.py +0 -53
  188. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/hiertest.py +0 -138
  189. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/menutest.py +0 -13
  190. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/objdoc.py +0 -57
  191. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/demoutils.py +0 -63
  192. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/flash.py +0 -95
  193. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/msoffice.py +0 -159
  194. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxserialtest.py +0 -132
  195. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxtest.py +0 -243
  196. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/webbrowser.py +0 -72
  197. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/openGLDemo.py +0 -415
  198. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/progressbar.py +0 -105
  199. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/sliderdemo.py +0 -76
  200. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/splittst.py +0 -79
  201. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/threadedgui.py +0 -189
  202. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/toolbar.py +0 -105
  203. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/__init__.py +0 -3
  204. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/__init__.py +0 -133
  205. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/configui.py +0 -34
  206. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgcon.py +0 -31
  207. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgpyapp.py +0 -48
  208. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/debugger.py +0 -1097
  209. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/fail.py +0 -54
  210. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/__init__.py +0 -0
  211. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/ideoptions.py +0 -136
  212. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/list.py +0 -146
  213. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/login.py +0 -155
  214. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/status.py +0 -242
  215. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/DockingBar.py +0 -676
  216. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/__init__.py +0 -0
  217. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/__init__.py +0 -0
  218. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/app.py +0 -411
  219. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/bitmap.py +0 -168
  220. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/cmdline.py +0 -54
  221. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dbgcommands.py +0 -188
  222. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dlgappcore.py +0 -76
  223. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/ModuleBrowser.py +0 -235
  224. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/__init__.py +0 -105
  225. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color/__init__.py +0 -0
  226. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color/coloreditor.py +0 -646
  227. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/configui.py +0 -299
  228. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/document.py +0 -379
  229. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/editor.py +0 -511
  230. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/frame.py +0 -74
  231. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/template.py +0 -59
  232. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/vss.py +0 -104
  233. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/help.py +0 -173
  234. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/interact.py +0 -995
  235. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpyapp.py +0 -552
  236. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpydde.py +0 -65
  237. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/scriptutils.py +0 -684
  238. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/sgrepmdi.py +0 -749
  239. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/startup.py +0 -70
  240. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/stdin.py +0 -172
  241. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/toolmenu.py +0 -279
  242. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/window.py +0 -14
  243. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/winout.py +0 -589
  244. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoExpand.py +0 -95
  245. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoIndent.py +0 -536
  246. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/CallTips.py +0 -216
  247. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/FormatParagraph.py +0 -166
  248. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/IdleHistory.py +0 -87
  249. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/PyParse.py +0 -585
  250. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/__init__.py +0 -1
  251. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/__init__.py +0 -0
  252. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/activex.py +0 -79
  253. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/afxres.py +0 -501
  254. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/dialog.py +0 -277
  255. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/docview.py +0 -151
  256. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/object.py +0 -66
  257. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/thread.py +0 -25
  258. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/window.py +0 -50
  259. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/IDLEenvironment.py +0 -593
  260. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/__init__.py +0 -1
  261. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/bindings.py +0 -180
  262. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/config.py +0 -363
  263. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/configui.py +0 -291
  264. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/control.py +0 -565
  265. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/document.py +0 -312
  266. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/find.py +0 -511
  267. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/formatter.py +0 -704
  268. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/keycodes.py +0 -190
  269. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/scintillacon.py +0 -3083
  270. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/view.py +0 -841
  271. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/TraceCollector.py +0 -79
  272. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/__init__.py +0 -0
  273. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browseProjects.py +0 -323
  274. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browser.py +0 -494
  275. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/hierlist.py +0 -353
  276. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regedit.py +0 -382
  277. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regpy.py +0 -80
  278. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupRead_BackupWrite.py +0 -119
  279. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupSeek_streamheaders.py +0 -137
  280. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CopyFileEx.py +0 -57
  281. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CreateFileTransacted_MiniVersion.py +0 -122
  282. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtFormatMessage.py +0 -83
  283. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_pull.py +0 -28
  284. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_push.py +0 -32
  285. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/FileSecurityTest.py +0 -137
  286. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/GetSaveFileName.py +0 -43
  287. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/NetValidatePasswordPolicy.py +0 -127
  288. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/OpenEncryptedFileRaw.py +0 -66
  289. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegCreateKeyTransacted.py +0 -60
  290. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegRestoreKey.py +0 -71
  291. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/SystemParametersInfo.py +0 -210
  292. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/c_extension/setup.py +0 -26
  293. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeclient.py +0 -18
  294. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeserver.py +0 -42
  295. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/desktopmanager.py +0 -246
  296. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/eventLogDemo.py +0 -143
  297. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/getfilever.py +0 -33
  298. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/mmapfile_demo.py +0 -101
  299. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/cat.py +0 -17
  300. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/runproc.py +0 -114
  301. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/print_desktop.py +0 -113
  302. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/rastest.py +0 -166
  303. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/GetTokenInformation.py +0 -110
  304. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/account_rights.py +0 -49
  305. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/explicit_entries.py +0 -170
  306. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/get_policy_info.py +0 -39
  307. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/list_rights.py +0 -35
  308. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/localized_names.py +0 -70
  309. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsaregevent.py +0 -14
  310. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsastore.py +0 -12
  311. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/query_information.py +0 -25
  312. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsave_sa.py +0 -61
  313. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsecurity.py +0 -36
  314. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sa_inherit.py +0 -8
  315. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/security_enums.py +0 -336
  316. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_audit.py +0 -106
  317. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_owner.py +0 -73
  318. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_policy_info.py +0 -25
  319. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setkernelobjectsecurity.py +0 -134
  320. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setnamedsecurityinfo.py +0 -131
  321. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setsecurityinfo.py +0 -131
  322. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setuserobjectsecurity.py +0 -102
  323. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/fetch_url.py +0 -158
  324. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/simple_auth.py +0 -72
  325. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/socket_server.py +0 -199
  326. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/validate_password.py +0 -41
  327. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/nativePipeTestService.py +0 -63
  328. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestService.py +0 -185
  329. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestServiceClient.py +0 -158
  330. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/serviceEvents.py +0 -98
  331. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/timer_demo.py +0 -72
  332. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboardDemo.py +0 -155
  333. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboard_bitmapdemo.py +0 -117
  334. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32comport_demo.py +0 -174
  335. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32console_demo.py +0 -132
  336. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32cred_demo.py +0 -82
  337. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32fileDemo.py +0 -41
  338. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_demo.py +0 -177
  339. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_devicenotify.py +0 -106
  340. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_dialog.py +0 -445
  341. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_menu.py +0 -464
  342. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_taskbar.py +0 -136
  343. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32netdemo.py +0 -272
  344. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32rcparser_demo.py +0 -86
  345. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32servicedemo.py +0 -23
  346. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32ts_logoff_disconnected.py +0 -25
  347. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/testwnet.py +0 -123
  348. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/winnetwk.py +0 -100
  349. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/winprocess.py +0 -230
  350. py2docfx/venv/venv1/Lib/site-packages/win32/lib/_win32verstamp_pywin32ctypes.py +0 -164
  351. py2docfx/venv/venv1/Lib/site-packages/win32/lib/afxres.py +0 -8
  352. py2docfx/venv/venv1/Lib/site-packages/win32/lib/commctrl.py +0 -1551
  353. py2docfx/venv/venv1/Lib/site-packages/win32/lib/mmsystem.py +0 -956
  354. py2docfx/venv/venv1/Lib/site-packages/win32/lib/netbios.py +0 -293
  355. py2docfx/venv/venv1/Lib/site-packages/win32/lib/ntsecuritycon.py +0 -731
  356. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_bootstrap.py +0 -21
  357. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_testutil.py +0 -291
  358. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywintypes.py +0 -124
  359. py2docfx/venv/venv1/Lib/site-packages/win32/lib/rasutil.py +0 -40
  360. py2docfx/venv/venv1/Lib/site-packages/win32/lib/regcheck.py +0 -161
  361. py2docfx/venv/venv1/Lib/site-packages/win32/lib/regutil.py +0 -395
  362. py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspi.py +0 -413
  363. py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspicon.py +0 -477
  364. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win2kras.py +0 -14
  365. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32con.py +0 -5064
  366. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32cryptcon.py +0 -1922
  367. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32evtlogutil.py +0 -225
  368. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32gui_struct.py +0 -957
  369. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32inetcon.py +0 -1086
  370. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32netcon.py +0 -627
  371. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhquery.py +0 -570
  372. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhutil.py +0 -212
  373. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32rcparser.py +0 -674
  374. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32serviceutil.py +0 -1073
  375. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32timezone.py +0 -1201
  376. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32traceutil.py +0 -59
  377. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32verstamp.py +0 -235
  378. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winerror.py +0 -7362
  379. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winioctlcon.py +0 -1079
  380. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winnt.py +0 -1347
  381. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winperf.py +0 -236
  382. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winxptheme.py +0 -8
  383. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/ControlService.py +0 -594
  384. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/BrandProject.py +0 -97
  385. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/bulkstamp.py +0 -156
  386. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/vssutil.py +0 -201
  387. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/backupEventLog.py +0 -46
  388. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/h2py.py +0 -194
  389. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/killProcName.py +0 -62
  390. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/pywin32_postinstall.py +0 -733
  391. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/pywin32_testall.py +0 -120
  392. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/rasutil.py +0 -98
  393. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/regsetup.py +0 -607
  394. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/setup_d.py +0 -111
  395. py2docfx/venv/venv1/Lib/site-packages/win32/test/handles.py +0 -175
  396. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_clipboard.py +0 -137
  397. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_exceptions.py +0 -213
  398. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_odbc.py +0 -264
  399. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_pywintypes.py +0 -111
  400. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_security.py +0 -166
  401. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_sspi.py +0 -229
  402. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32api.py +0 -273
  403. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32clipboard.py +0 -59
  404. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32cred.py +0 -91
  405. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32crypt.py +0 -144
  406. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32event.py +0 -119
  407. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32file.py +0 -1096
  408. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32gui.py +0 -227
  409. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32guistruct.py +0 -333
  410. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32inet.py +0 -108
  411. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32net.py +0 -23
  412. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32pipe.py +0 -148
  413. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32print.py +0 -24
  414. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32profile.py +0 -19
  415. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32rcparser.py +0 -70
  416. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32timezone.py +0 -16
  417. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32trace.py +0 -366
  418. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32ts.py +0 -19
  419. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32wnet.py +0 -174
  420. py2docfx/venv/venv1/Lib/site-packages/win32/test/testall.py +0 -223
  421. py2docfx/venv/venv1/Lib/site-packages/win32/winxpgui.py +0 -13
  422. py2docfx/venv/venv1/Lib/site-packages/win32com/__init__.py +0 -134
  423. py2docfx/venv/venv1/Lib/site-packages/win32com/client/CLSIDToClass.py +0 -60
  424. py2docfx/venv/venv1/Lib/site-packages/win32com/client/__init__.py +0 -717
  425. py2docfx/venv/venv1/Lib/site-packages/win32com/client/build.py +0 -771
  426. py2docfx/venv/venv1/Lib/site-packages/win32com/client/combrowse.py +0 -604
  427. py2docfx/venv/venv1/Lib/site-packages/win32com/client/connect.py +0 -48
  428. py2docfx/venv/venv1/Lib/site-packages/win32com/client/dynamic.py +0 -699
  429. py2docfx/venv/venv1/Lib/site-packages/win32com/client/gencache.py +0 -825
  430. py2docfx/venv/venv1/Lib/site-packages/win32com/client/genpy.py +0 -1350
  431. py2docfx/venv/venv1/Lib/site-packages/win32com/client/makepy.py +0 -453
  432. py2docfx/venv/venv1/Lib/site-packages/win32com/client/selecttlb.py +0 -182
  433. py2docfx/venv/venv1/Lib/site-packages/win32com/client/tlbrowse.py +0 -277
  434. py2docfx/venv/venv1/Lib/site-packages/win32com/client/util.py +0 -103
  435. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/__init__.py +0 -0
  436. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/connect.py +0 -96
  437. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/dump_clipboard.py +0 -74
  438. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsApartmentThreaded.py +0 -98
  439. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsFreeThreaded.py +0 -92
  440. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelAddin.py +0 -169
  441. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelRTDServer.py +0 -434
  442. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/iebutton.py +0 -214
  443. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/ietoolbar.py +0 -368
  444. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/outlookAddin.py +0 -135
  445. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/trybag.py +0 -78
  446. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/__init__.py +0 -1
  447. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegw.py +0 -618
  448. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwenum.py +0 -331
  449. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwparse.py +0 -1017
  450. py2docfx/venv/venv1/Lib/site-packages/win32com/olectl.py +0 -70
  451. py2docfx/venv/venv1/Lib/site-packages/win32com/server/__init__.py +0 -1
  452. py2docfx/venv/venv1/Lib/site-packages/win32com/server/connect.py +0 -85
  453. py2docfx/venv/venv1/Lib/site-packages/win32com/server/dispatcher.py +0 -239
  454. py2docfx/venv/venv1/Lib/site-packages/win32com/server/exception.py +0 -99
  455. py2docfx/venv/venv1/Lib/site-packages/win32com/server/factory.py +0 -26
  456. py2docfx/venv/venv1/Lib/site-packages/win32com/server/localserver.py +0 -53
  457. py2docfx/venv/venv1/Lib/site-packages/win32com/server/policy.py +0 -803
  458. py2docfx/venv/venv1/Lib/site-packages/win32com/server/register.py +0 -677
  459. py2docfx/venv/venv1/Lib/site-packages/win32com/server/util.py +0 -229
  460. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/PythonTools.py +0 -47
  461. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/__init__.py +0 -0
  462. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/dictionary.py +0 -133
  463. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/interp.py +0 -59
  464. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/perfmon.py +0 -36
  465. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/test_pycomtest.py +0 -181
  466. py2docfx/venv/venv1/Lib/site-packages/win32com/storagecon.py +0 -142
  467. py2docfx/venv/venv1/Lib/site-packages/win32com/test/GenTestScripts.py +0 -95
  468. py2docfx/venv/venv1/Lib/site-packages/win32com/test/__init__.py +0 -1
  469. py2docfx/venv/venv1/Lib/site-packages/win32com/test/daodump.py +0 -88
  470. py2docfx/venv/venv1/Lib/site-packages/win32com/test/errorSemantics.py +0 -243
  471. py2docfx/venv/venv1/Lib/site-packages/win32com/test/pippo_server.py +0 -96
  472. py2docfx/venv/venv1/Lib/site-packages/win32com/test/policySemantics.py +0 -115
  473. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testADOEvents.py +0 -100
  474. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAXScript.py +0 -44
  475. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAccess.py +0 -185
  476. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testArrays.py +0 -99
  477. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testClipboard.py +0 -169
  478. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testCollections.py +0 -159
  479. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testConversionErrors.py +0 -35
  480. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDCOM.py +0 -50
  481. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDates.py +0 -74
  482. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDictionary.py +0 -101
  483. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDynamic.py +0 -83
  484. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExchange.py +0 -121
  485. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExplorer.py +0 -139
  486. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGIT.py +0 -142
  487. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGatewayAddresses.py +0 -149
  488. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testIterators.py +0 -140
  489. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOffice.py +0 -184
  490. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOfficeEvents.py +0 -138
  491. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMarshal.py +0 -160
  492. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPersist.py +0 -227
  493. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPippo.py +0 -80
  494. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPyComTest.py +0 -918
  495. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testROT.py +0 -29
  496. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testServers.py +0 -51
  497. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testShell.py +0 -272
  498. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStorage.py +0 -88
  499. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStreams.py +0 -147
  500. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testWMI.py +0 -18
  501. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testall.py +0 -320
  502. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testmakepy.py +0 -54
  503. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvb.py +0 -583
  504. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvbscript_regexp.py +0 -40
  505. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testxslt.py +0 -34
  506. py2docfx/venv/venv1/Lib/site-packages/win32com/test/util.py +0 -262
  507. py2docfx/venv/venv1/Lib/site-packages/win32com/universal.py +0 -224
  508. py2docfx/venv/venv1/Lib/site-packages/win32com/util.py +0 -35
  509. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/__init__.py +0 -113
  510. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/adsicon.py +0 -340
  511. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/objectPicker.py +0 -68
  512. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/scp.py +0 -565
  513. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/search.py +0 -151
  514. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/test.py +0 -274
  515. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/__init__.py +0 -6
  516. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditSecurity.py +0 -229
  517. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditServiceSecurity.py +0 -219
  518. py2docfx/venv/venv1/Lib/site-packages/win32comext/axcontrol/__init__.py +0 -4
  519. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/__init__.py +0 -4
  520. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/adb.py +0 -467
  521. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/codecontainer.py +0 -279
  522. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/contexts.py +0 -58
  523. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/debugger.py +0 -238
  524. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/documents.py +0 -135
  525. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/dump.py +0 -57
  526. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/expressions.py +0 -212
  527. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/gateways.py +0 -583
  528. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/stackframe.py +0 -178
  529. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/util.py +0 -98
  530. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/__init__.py +0 -4
  531. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/asputil.py +0 -13
  532. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/__init__.py +0 -1
  533. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/debug.py +0 -223
  534. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/error.py +0 -262
  535. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/framework.py +0 -1291
  536. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pydumper.py +0 -78
  537. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript.py +0 -438
  538. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript_rexec.py +0 -54
  539. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/scriptdispatch.py +0 -103
  540. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/__init__.py +0 -0
  541. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/axsite.py +0 -145
  542. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/leakTest.py +0 -185
  543. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost.py +0 -240
  544. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost4Dbg.py +0 -83
  545. py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/__init__.py +0 -6
  546. py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/show_all_jobs.py +0 -48
  547. py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/test_bits.py +0 -119
  548. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/__init__.py +0 -4
  549. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/__init__.py +0 -1
  550. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_record.py +0 -60
  551. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_test.py +0 -402
  552. py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/__init__.py +0 -1
  553. py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/demo/filterDemo.py +0 -300
  554. py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/ifiltercon.py +0 -110
  555. py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/__init__.py +0 -4
  556. py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/inetcon.py +0 -261
  557. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/__init__.py +0 -21
  558. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/demos/mapisend.py +0 -98
  559. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/emsabtags.py +0 -875
  560. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapitags.py +0 -1023
  561. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapiutil.py +0 -211
  562. py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/__init__.py +0 -1
  563. py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/pscon.py +0 -838
  564. py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/test/testpropsys.py +0 -5
  565. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/__init__.py +0 -4
  566. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IActiveDesktop.py +0 -83
  567. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IFileOperationProgressSink.py +0 -179
  568. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IShellLinkDataList.py +0 -67
  569. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/ITransferAdviseSink.py +0 -93
  570. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IUniformResourceLocator.py +0 -56
  571. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/browse_for_folder.py +0 -45
  572. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/create_link.py +0 -73
  573. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/dump_link.py +0 -58
  574. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/explorer_browser.py +0 -143
  575. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/column_provider.py +0 -125
  576. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/context_menu.py +0 -122
  577. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/copy_hook.py +0 -84
  578. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/empty_volume_cache.py +0 -188
  579. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/folder_view.py +0 -866
  580. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/icon_handler.py +0 -81
  581. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/shell_view.py +0 -971
  582. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/shellexecuteex.py +0 -19
  583. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/viewstate.py +0 -68
  584. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/walk_shell_folders.py +0 -24
  585. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/shellcon.py +0 -1615
  586. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testSHFileOperation.py +0 -75
  587. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellFolder.py +0 -21
  588. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellItem.py +0 -69
  589. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/__init__.py +0 -6
  590. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask.py +0 -66
  591. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_1.py +0 -68
  592. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_2.py +0 -49
  593. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_localsystem.py +0 -3
  594. py2docfx/venv/venv1/Scripts/pywin32_postinstall.py +0 -733
  595. py2docfx/venv/venv1/Scripts/pywin32_testall.py +0 -120
  596. {py2docfx-0.1.15.dev2025501.dist-info → py2docfx-0.1.15.dev2038808.dist-info}/WHEEL +0 -0
  597. {py2docfx-0.1.15.dev2025501.dist-info → py2docfx-0.1.15.dev2038808.dist-info}/top_level.txt +0 -0
@@ -1,809 +0,0 @@
1
- """Installation utilities for Python ISAPI filters and extensions."""
2
-
3
- # this code adapted from "Tomcat JK2 ISAPI redirector", part of Apache
4
- # Created July 2004, Mark Hammond.
5
- from __future__ import annotations
6
-
7
- import importlib.machinery
8
- import os
9
- import shutil
10
- import stat
11
- import sys
12
- import traceback
13
- from collections.abc import Mapping
14
-
15
- import pythoncom
16
- import win32api
17
- import winerror
18
- from win32com.client import GetObject
19
-
20
- _APP_INPROC = 0
21
- _APP_OUTPROC = 1
22
- _APP_POOLED = 2
23
- _IIS_OBJECT = "IIS://LocalHost/W3SVC"
24
- _IIS_SERVER = "IIsWebServer"
25
- _IIS_WEBDIR = "IIsWebDirectory"
26
- _IIS_WEBVIRTUALDIR = "IIsWebVirtualDir"
27
- _IIS_FILTERS = "IIsFilters"
28
- _IIS_FILTER = "IIsFilter"
29
-
30
- _DEFAULT_SERVER_NAME = "Default Web Site"
31
- _DEFAULT_HEADERS = "X-Powered-By: Python"
32
- _DEFAULT_PROTECTION = _APP_POOLED
33
-
34
- # Default is for 'execute' only access - ie, only the extension
35
- # can be used. This can be overridden via your install script.
36
- _DEFAULT_ACCESS_EXECUTE = True
37
- _DEFAULT_ACCESS_READ = False
38
- _DEFAULT_ACCESS_WRITE = False
39
- _DEFAULT_ACCESS_SCRIPT = False
40
- _DEFAULT_CONTENT_INDEXED = False
41
- _DEFAULT_ENABLE_DIR_BROWSING = False
42
- _DEFAULT_ENABLE_DEFAULT_DOC = False
43
-
44
- this_dir = os.path.abspath(os.path.dirname(__file__))
45
-
46
-
47
- class FilterParameters:
48
- Name = None
49
- Description = None
50
- Path = None
51
- Server = None
52
- # Params that control if/how AddExtensionFile is called.
53
- AddExtensionFile = True
54
- AddExtensionFile_Enabled = True
55
- AddExtensionFile_GroupID = None # defaults to Name
56
- AddExtensionFile_CanDelete = True
57
- AddExtensionFile_Description = None # defaults to Description.
58
-
59
- def __init__(self, **kw):
60
- self.__dict__.update(kw)
61
-
62
-
63
- class VirtualDirParameters:
64
- Name = None # Must be provided.
65
- Description = None # defaults to Name
66
- AppProtection = _DEFAULT_PROTECTION
67
- Headers = _DEFAULT_HEADERS
68
- Path = None # defaults to WWW root.
69
- Type = _IIS_WEBVIRTUALDIR
70
- AccessExecute = _DEFAULT_ACCESS_EXECUTE
71
- AccessRead = _DEFAULT_ACCESS_READ
72
- AccessWrite = _DEFAULT_ACCESS_WRITE
73
- AccessScript = _DEFAULT_ACCESS_SCRIPT
74
- ContentIndexed = _DEFAULT_CONTENT_INDEXED
75
- EnableDirBrowsing = _DEFAULT_ENABLE_DIR_BROWSING
76
- EnableDefaultDoc = _DEFAULT_ENABLE_DEFAULT_DOC
77
- DefaultDoc = None # Only set in IIS if not None
78
- ScriptMaps: list[ScriptMapParams] = []
79
- ScriptMapUpdate = "end" # can be 'start', 'end', 'replace'
80
- Server = None
81
-
82
- def __init__(self, **kw):
83
- self.__dict__.update(kw)
84
-
85
- def is_root(self):
86
- "This virtual directory is a root directory if parent and name are blank"
87
- parent, name = self.split_path()
88
- return not parent and not name
89
-
90
- def split_path(self):
91
- return split_path(self.Name)
92
-
93
-
94
- class ScriptMapParams:
95
- Extension = None
96
- Module = None
97
- Flags = 5
98
- Verbs = ""
99
- # Params that control if/how AddExtensionFile is called.
100
- AddExtensionFile = True
101
- AddExtensionFile_Enabled = True
102
- AddExtensionFile_GroupID = None # defaults to Name
103
- AddExtensionFile_CanDelete = True
104
- AddExtensionFile_Description = None # defaults to Description.
105
-
106
- def __init__(self, **kw):
107
- self.__dict__.update(kw)
108
-
109
- def __str__(self):
110
- "Format this parameter suitable for IIS"
111
- items = [self.Extension, self.Module, self.Flags]
112
- # IIS gets upset if there is a trailing verb comma, but no verbs
113
- if self.Verbs:
114
- items.append(self.Verbs)
115
- items = [str(item) for item in items]
116
- return ",".join(items)
117
-
118
-
119
- class ISAPIParameters:
120
- ServerName = _DEFAULT_SERVER_NAME
121
- # Description = None
122
- Filters: list[FilterParameters] = []
123
- VirtualDirs: list[VirtualDirParameters] = []
124
-
125
- def __init__(self, **kw):
126
- self.__dict__.update(kw)
127
-
128
-
129
- verbose = 1 # The level - 0 is quiet.
130
-
131
-
132
- def log(level, what):
133
- if verbose >= level:
134
- print(what)
135
-
136
-
137
- # Convert an ADSI COM exception to the Win32 error code embedded in it.
138
- def _GetWin32ErrorCode(com_exc):
139
- hr = com_exc.hresult
140
- # If we have more details in the 'excepinfo' struct, use it.
141
- if com_exc.excepinfo:
142
- hr = com_exc.excepinfo[-1]
143
- if winerror.HRESULT_FACILITY(hr) != winerror.FACILITY_WIN32:
144
- raise
145
- return winerror.SCODE_CODE(hr)
146
-
147
-
148
- class InstallationError(Exception):
149
- pass
150
-
151
-
152
- class ItemNotFound(InstallationError):
153
- pass
154
-
155
-
156
- class ConfigurationError(InstallationError):
157
- pass
158
-
159
-
160
- def FindPath(options, server, name):
161
- if name.lower().startswith("iis://"):
162
- return name
163
- else:
164
- if name and name[0] != "/":
165
- name = "/" + name
166
- return FindWebServer(options, server) + "/ROOT" + name
167
-
168
-
169
- def LocateWebServerPath(description):
170
- """
171
- Find an IIS web server whose name or comment matches the provided
172
- description (case-insensitive).
173
-
174
- >>> LocateWebServerPath('Default Web Site') # doctest: +SKIP
175
-
176
- or
177
-
178
- >>> LocateWebServerPath('1') #doctest: +SKIP
179
- """
180
- assert len(description) >= 1, "Server name or comment is required"
181
- iis = GetObject(_IIS_OBJECT)
182
- description = description.lower().strip()
183
- for site in iis:
184
- # Name is generally a number, but no need to assume that.
185
- site_attributes = [
186
- getattr(site, attr, "").lower().strip()
187
- for attr in ("Name", "ServerComment")
188
- ]
189
- if description in site_attributes:
190
- return site.AdsPath
191
- msg = "No web sites match the description '%s'" % description
192
- raise ItemNotFound(msg)
193
-
194
-
195
- def GetWebServer(description=None):
196
- """
197
- Load the web server instance (COM object) for a given instance
198
- or description.
199
- If None is specified, the default website is retrieved (indicated
200
- by the identifier 1.
201
- """
202
- description = description or "1"
203
- path = LocateWebServerPath(description)
204
- server = LoadWebServer(path)
205
- return server
206
-
207
-
208
- def LoadWebServer(path):
209
- try:
210
- server = GetObject(path)
211
- except pythoncom.com_error as exc:
212
- msg = exc.strerror
213
- if exc.excepinfo and exc.excepinfo[2]:
214
- msg = exc.excepinfo[2]
215
- msg = f"WebServer {path}: {msg}"
216
- raise ItemNotFound(msg)
217
- return server
218
-
219
-
220
- def FindWebServer(options, server_desc):
221
- """
222
- Legacy function to allow options to define a .server property
223
- to override the other parameter. Use GetWebServer instead.
224
- """
225
- # options takes precedence
226
- server_desc = options.server or server_desc
227
- # make sure server_desc is unicode (could be mbcs if passed in
228
- # sys.argv).
229
- if server_desc and not isinstance(server_desc, str):
230
- server_desc = server_desc.decode("mbcs")
231
-
232
- # get the server (if server_desc is None, the default site is acquired)
233
- server = GetWebServer(server_desc)
234
- return server.adsPath
235
-
236
-
237
- def split_path(path):
238
- """
239
- Get the parent path and basename.
240
-
241
- >>> split_path('/')
242
- ['', '']
243
-
244
- >>> split_path('')
245
- ['', '']
246
-
247
- >>> split_path('foo')
248
- ['', 'foo']
249
-
250
- >>> split_path('/foo')
251
- ['', 'foo']
252
-
253
- >>> split_path('/foo/bar')
254
- ['/foo', 'bar']
255
-
256
- >>> split_path('foo/bar')
257
- ['/foo', 'bar']
258
- """
259
-
260
- if not path.startswith("/"):
261
- path = "/" + path
262
- return path.rsplit("/", 1)
263
-
264
-
265
- def _CreateDirectory(iis_dir, name, params):
266
- # We used to go to lengths to keep an existing virtual directory
267
- # in place. However, in some cases the existing directories got
268
- # into a bad state, and an update failed to get them working.
269
- # So we nuke it first. If this is a problem, we could consider adding
270
- # a --keep-existing option.
271
- try:
272
- # Also seen the Class change to a generic IISObject - so nuke
273
- # *any* existing object, regardless of Class
274
- assert name.strip("/"), "mustn't delete the root!"
275
- iis_dir.Delete("", name)
276
- log(2, f"Deleted old directory '{name}'")
277
- except pythoncom.com_error:
278
- pass
279
-
280
- newDir = iis_dir.Create(params.Type, name)
281
- log(2, f"Creating new directory '{name}' in {iis_dir.Name}...")
282
-
283
- friendly = params.Description or params.Name
284
- newDir.AppFriendlyName = friendly
285
-
286
- # Note that the new directory won't be visible in the IIS UI
287
- # unless the directory exists on the filesystem.
288
- try:
289
- path = params.Path or iis_dir.Path
290
- newDir.Path = path
291
- except AttributeError:
292
- # If params.Type is IIS_WEBDIRECTORY, an exception is thrown
293
- pass
294
- newDir.AppCreate2(params.AppProtection)
295
- # XXX - note that these Headers only work in IIS6 and earlier. IIS7
296
- # only supports them on the w3svc node - not even on individial sites,
297
- # let alone individual extensions in the site!
298
- if params.Headers:
299
- newDir.HttpCustomHeaders = params.Headers
300
-
301
- log(2, "Setting directory options...")
302
- newDir.AccessExecute = params.AccessExecute
303
- newDir.AccessRead = params.AccessRead
304
- newDir.AccessWrite = params.AccessWrite
305
- newDir.AccessScript = params.AccessScript
306
- newDir.ContentIndexed = params.ContentIndexed
307
- newDir.EnableDirBrowsing = params.EnableDirBrowsing
308
- newDir.EnableDefaultDoc = params.EnableDefaultDoc
309
- if params.DefaultDoc is not None:
310
- newDir.DefaultDoc = params.DefaultDoc
311
- newDir.SetInfo()
312
- return newDir
313
-
314
-
315
- def CreateDirectory(params, options):
316
- _CallHook(params, "PreInstall", options)
317
- if not params.Name:
318
- raise ConfigurationError("No Name param")
319
- parent, name = params.split_path()
320
- target_dir = GetObject(FindPath(options, params.Server, parent))
321
-
322
- if not params.is_root():
323
- target_dir = _CreateDirectory(target_dir, name, params)
324
-
325
- AssignScriptMaps(params.ScriptMaps, target_dir, params.ScriptMapUpdate)
326
-
327
- _CallHook(params, "PostInstall", options, target_dir)
328
- log(1, f"Configured Virtual Directory: {params.Name}")
329
- return target_dir
330
-
331
-
332
- def AssignScriptMaps(script_maps, target, update="replace"):
333
- """Updates IIS with the supplied script map information.
334
-
335
- script_maps is a list of ScriptMapParameter objects
336
-
337
- target is an IIS Virtual Directory to assign the script maps to
338
-
339
- update is a string indicating how to update the maps, one of ('start',
340
- 'end', or 'replace')
341
- """
342
- # determine which function to use to assign script maps
343
- script_map_func = "_AssignScriptMaps" + update.capitalize()
344
- try:
345
- script_map_func = eval(script_map_func)
346
- except NameError:
347
- msg = "Unknown ScriptMapUpdate option '%s'" % update
348
- raise ConfigurationError(msg)
349
- # use the str method to format the script maps for IIS
350
- script_maps = [str(s) for s in script_maps]
351
- # call the correct function
352
- script_map_func(target, script_maps)
353
- target.SetInfo()
354
-
355
-
356
- def get_unique_items(sequence, reference):
357
- "Return items in sequence that can't be found in reference."
358
- return tuple([item for item in sequence if item not in reference])
359
-
360
-
361
- def _AssignScriptMapsReplace(target, script_maps):
362
- target.ScriptMaps = script_maps
363
-
364
-
365
- def _AssignScriptMapsEnd(target, script_maps):
366
- unique_new_maps = get_unique_items(script_maps, target.ScriptMaps)
367
- target.ScriptMaps += unique_new_maps
368
-
369
-
370
- def _AssignScriptMapsStart(target, script_maps):
371
- unique_new_maps = get_unique_items(script_maps, target.ScriptMaps)
372
- target.ScriptMaps = unique_new_maps + target.ScriptMaps
373
-
374
-
375
- def CreateISAPIFilter(filterParams, options):
376
- server = FindWebServer(options, filterParams.Server)
377
- _CallHook(filterParams, "PreInstall", options)
378
- try:
379
- filters = GetObject(server + "/Filters")
380
- except pythoncom.com_error as exc:
381
- # Brand new sites don't have the '/Filters' collection - create it.
382
- # Any errors other than 'not found' we shouldn't ignore.
383
- if (
384
- winerror.HRESULT_FACILITY(exc.hresult) != winerror.FACILITY_WIN32
385
- or winerror.HRESULT_CODE(exc.hresult) != winerror.ERROR_PATH_NOT_FOUND
386
- ):
387
- raise
388
- server_ob = GetObject(server)
389
- filters = server_ob.Create(_IIS_FILTERS, "Filters")
390
- filters.FilterLoadOrder = ""
391
- filters.SetInfo()
392
-
393
- # As for VirtualDir, delete an existing one.
394
- assert filterParams.Name.strip("/"), "mustn't delete the root!"
395
- try:
396
- filters.Delete(_IIS_FILTER, filterParams.Name)
397
- log(2, f"Deleted old filter '{filterParams.Name}'")
398
- except pythoncom.com_error:
399
- pass
400
- newFilter = filters.Create(_IIS_FILTER, filterParams.Name)
401
- log(2, "Created new ISAPI filter...")
402
- assert os.path.isfile(filterParams.Path)
403
- newFilter.FilterPath = filterParams.Path
404
- newFilter.FilterDescription = filterParams.Description
405
- newFilter.SetInfo()
406
- load_order = [b.strip() for b in filters.FilterLoadOrder.split(",") if b]
407
- if filterParams.Name not in load_order:
408
- load_order.append(filterParams.Name)
409
- filters.FilterLoadOrder = ",".join(load_order)
410
- filters.SetInfo()
411
- _CallHook(filterParams, "PostInstall", options, newFilter)
412
- log(1, f"Configured Filter: {filterParams.Name}")
413
- return newFilter
414
-
415
-
416
- def DeleteISAPIFilter(filterParams, options):
417
- _CallHook(filterParams, "PreRemove", options)
418
- server = FindWebServer(options, filterParams.Server)
419
- ob_path = server + "/Filters"
420
- try:
421
- filters = GetObject(ob_path)
422
- except pythoncom.com_error as details:
423
- # failure to open the filters just means a totally clean IIS install
424
- # (IIS5 at least has no 'Filters' key when freshly installed).
425
- log(2, f"ISAPI filter path '{ob_path}' did not exist.")
426
- return
427
- try:
428
- assert filterParams.Name.strip("/"), "mustn't delete the root!"
429
- filters.Delete(_IIS_FILTER, filterParams.Name)
430
- log(2, f"Deleted ISAPI filter '{filterParams.Name}'")
431
- except pythoncom.com_error as details:
432
- rc = _GetWin32ErrorCode(details)
433
- if rc != winerror.ERROR_PATH_NOT_FOUND:
434
- raise
435
- log(2, f"ISAPI filter '{filterParams.Name}' did not exist.")
436
- # Remove from the load order
437
- load_order = [b.strip() for b in filters.FilterLoadOrder.split(",") if b]
438
- if filterParams.Name in load_order:
439
- load_order.remove(filterParams.Name)
440
- filters.FilterLoadOrder = ",".join(load_order)
441
- filters.SetInfo()
442
- _CallHook(filterParams, "PostRemove", options)
443
- log(1, f"Deleted Filter: {filterParams.Name}")
444
-
445
-
446
- def _AddExtensionFile(module, def_groupid, def_desc, params, options):
447
- group_id = params.AddExtensionFile_GroupID or def_groupid
448
- desc = params.AddExtensionFile_Description or def_desc
449
- try:
450
- ob = GetObject(_IIS_OBJECT)
451
- ob.AddExtensionFile(
452
- module,
453
- params.AddExtensionFile_Enabled,
454
- group_id,
455
- params.AddExtensionFile_CanDelete,
456
- desc,
457
- )
458
- log(2, f"Added extension file '{module}' ({desc})")
459
- except (pythoncom.com_error, AttributeError) as details:
460
- # IIS5 always fails. Probably should upgrade this to
461
- # complain more loudly if IIS6 fails.
462
- log(2, f"Failed to add extension file '{module}': {details}")
463
-
464
-
465
- def AddExtensionFiles(params, options):
466
- """Register the modules used by the filters/extensions as a trusted
467
- 'extension module' - required by the default IIS6 security settings."""
468
- # Add each module only once.
469
- added = {}
470
- for vd in params.VirtualDirs:
471
- for smp in vd.ScriptMaps:
472
- if smp.Module not in added and smp.AddExtensionFile:
473
- _AddExtensionFile(smp.Module, vd.Name, vd.Description, smp, options)
474
- added[smp.Module] = True
475
-
476
- for fd in params.Filters:
477
- if fd.Path not in added and fd.AddExtensionFile:
478
- _AddExtensionFile(fd.Path, fd.Name, fd.Description, fd, options)
479
- added[fd.Path] = True
480
-
481
-
482
- def _DeleteExtensionFileRecord(module, options):
483
- try:
484
- ob = GetObject(_IIS_OBJECT)
485
- ob.DeleteExtensionFileRecord(module)
486
- log(2, "Deleted extension file record for '%s'" % module)
487
- except (pythoncom.com_error, AttributeError) as details:
488
- log(2, f"Failed to remove extension file '{module}': {details}")
489
-
490
-
491
- def DeleteExtensionFileRecords(params, options):
492
- deleted = {} # only remove each .dll once.
493
- for vd in params.VirtualDirs:
494
- for smp in vd.ScriptMaps:
495
- if smp.Module not in deleted and smp.AddExtensionFile:
496
- _DeleteExtensionFileRecord(smp.Module, options)
497
- deleted[smp.Module] = True
498
-
499
- for filter_def in params.Filters:
500
- if filter_def.Path not in deleted and filter_def.AddExtensionFile:
501
- _DeleteExtensionFileRecord(filter_def.Path, options)
502
- deleted[filter_def.Path] = True
503
-
504
-
505
- def CheckLoaderModule(dll_name):
506
- suffix = "_d" if "_d.pyd" in importlib.machinery.EXTENSION_SUFFIXES else ""
507
- template = os.path.join(this_dir, "PyISAPI_loader" + suffix + ".dll")
508
- if not os.path.isfile(template):
509
- raise ConfigurationError(f"Template loader '{template}' does not exist")
510
- # We can't do a simple "is newer" check, as the DLL is specific to the
511
- # Python version. So we check the date-time and size are identical,
512
- # and skip the copy in that case.
513
- src_stat = os.stat(template)
514
- try:
515
- dest_stat = os.stat(dll_name)
516
- except OSError:
517
- same = 0
518
- else:
519
- same = (
520
- src_stat[stat.ST_SIZE] == dest_stat[stat.ST_SIZE]
521
- and src_stat[stat.ST_MTIME] == dest_stat[stat.ST_MTIME]
522
- )
523
- if not same:
524
- log(2, f"Updating {template}->{dll_name}")
525
- shutil.copyfile(template, dll_name)
526
- shutil.copystat(template, dll_name)
527
- else:
528
- log(2, f"{dll_name} is up to date.")
529
-
530
-
531
- def _CallHook(ob, hook_name, options, *extra_args):
532
- func = getattr(ob, hook_name, None)
533
- if func is not None:
534
- args = (ob, options) + extra_args
535
- func(*args)
536
-
537
-
538
- def Install(params, options):
539
- _CallHook(params, "PreInstall", options)
540
- for vd in params.VirtualDirs:
541
- CreateDirectory(vd, options)
542
-
543
- for filter_def in params.Filters:
544
- CreateISAPIFilter(filter_def, options)
545
-
546
- AddExtensionFiles(params, options)
547
-
548
- _CallHook(params, "PostInstall", options)
549
-
550
-
551
- def RemoveDirectory(params, options):
552
- if params.is_root():
553
- return
554
- try:
555
- directory = GetObject(FindPath(options, params.Server, params.Name))
556
- except pythoncom.com_error as details:
557
- rc = _GetWin32ErrorCode(details)
558
- if rc != winerror.ERROR_PATH_NOT_FOUND:
559
- raise
560
- log(2, "VirtualDirectory '%s' did not exist" % params.Name)
561
- directory = None
562
- if directory is not None:
563
- # Be robust should IIS get upset about unloading.
564
- try:
565
- directory.AppUnLoad()
566
- except:
567
- exc_val = sys.exc_info()[1]
568
- log(2, f"AppUnLoad() for {params.Name} failed: {exc_val}")
569
- # Continue trying to delete it.
570
- try:
571
- parent = GetObject(directory.Parent)
572
- parent.Delete(directory.Class, directory.Name)
573
- log(1, f"Deleted Virtual Directory: {params.Name}")
574
- except:
575
- exc_val = sys.exc_info()[1]
576
- log(1, f"Failed to remove directory {params.Name}: {exc_val}")
577
-
578
-
579
- def RemoveScriptMaps(vd_params, options):
580
- "Remove script maps from the already installed virtual directory"
581
- parent, name = vd_params.split_path()
582
- target_dir = GetObject(FindPath(options, vd_params.Server, parent))
583
- installed_maps = list(target_dir.ScriptMaps)
584
- for _map in map(str, vd_params.ScriptMaps):
585
- if _map in installed_maps:
586
- installed_maps.remove(_map)
587
- target_dir.ScriptMaps = installed_maps
588
- target_dir.SetInfo()
589
-
590
-
591
- def Uninstall(params, options):
592
- _CallHook(params, "PreRemove", options)
593
-
594
- DeleteExtensionFileRecords(params, options)
595
-
596
- for vd in params.VirtualDirs:
597
- _CallHook(vd, "PreRemove", options)
598
-
599
- RemoveDirectory(vd, options)
600
- if vd.is_root():
601
- # if this is installed to the root virtual directory, we can't delete it
602
- # so remove the script maps.
603
- RemoveScriptMaps(vd, options)
604
-
605
- _CallHook(vd, "PostRemove", options)
606
-
607
- for filter_def in params.Filters:
608
- DeleteISAPIFilter(filter_def, options)
609
- _CallHook(params, "PostRemove", options)
610
-
611
-
612
- # Patch up any missing module names in the params, replacing them with
613
- # the DLL name that hosts this extension/filter.
614
- def _PatchParamsModule(params, dll_name, file_must_exist=True):
615
- if file_must_exist:
616
- if not os.path.isfile(dll_name):
617
- raise ConfigurationError(f"{dll_name} does not exist")
618
-
619
- # Patch up all references to the DLL.
620
- for f in params.Filters:
621
- if f.Path is None:
622
- f.Path = dll_name
623
- for d in params.VirtualDirs:
624
- for sm in d.ScriptMaps:
625
- if sm.Module is None:
626
- sm.Module = dll_name
627
-
628
-
629
- def GetLoaderModuleName(mod_name, check_module=None):
630
- # find the name of the DLL hosting us.
631
- # By default, this is "_{module_base_name}.dll"
632
- if hasattr(sys, "frozen"):
633
- # What to do? The .dll knows its name, but this is likely to be
634
- # executed via a .exe, which does not know.
635
- base, ext = os.path.splitext(mod_name)
636
- path, base = os.path.split(base)
637
- # handle the common case of 'foo.exe'/'foow.exe'
638
- if base.endswith("w"):
639
- base = base[:-1]
640
- # For py2exe, we have '_foo.dll' as the standard pyisapi loader - but
641
- # 'foo.dll' is what we use (it just delegates).
642
- # So no leading '_' on the installed name.
643
- dll_name = os.path.abspath(os.path.join(path, base + ".dll"))
644
- else:
645
- base, ext = os.path.splitext(mod_name)
646
- path, base = os.path.split(base)
647
- dll_name = os.path.abspath(os.path.join(path, "_" + base + ".dll"))
648
- # Check we actually have it.
649
- if check_module is None:
650
- check_module = not hasattr(sys, "frozen")
651
- if check_module:
652
- CheckLoaderModule(dll_name)
653
- return dll_name
654
-
655
-
656
- # Note the 'log' params to these 'builtin' args - old versions of pywin32
657
- # didn't log at all in this function (by intent; anyone calling this was
658
- # responsible). So existing code that calls this function with the old
659
- # signature (ie, without a 'log' param) still gets the same behaviour as
660
- # before...
661
-
662
-
663
- def InstallModule(conf_module_name, params, options, log=lambda *args: None):
664
- "Install the extension"
665
- if not hasattr(sys, "frozen"):
666
- conf_module_name = os.path.abspath(conf_module_name)
667
- if not os.path.isfile(conf_module_name):
668
- raise ConfigurationError(f"{conf_module_name} does not exist")
669
-
670
- loader_dll = GetLoaderModuleName(conf_module_name)
671
- _PatchParamsModule(params, loader_dll)
672
- Install(params, options)
673
- log(1, "Installation complete.")
674
-
675
-
676
- def UninstallModule(conf_module_name, params, options, log=lambda *args: None):
677
- "Remove the extension"
678
- loader_dll = GetLoaderModuleName(conf_module_name, False)
679
- _PatchParamsModule(params, loader_dll, False)
680
- Uninstall(params, options)
681
- log(1, "Uninstallation complete.")
682
-
683
-
684
- standard_arguments = {
685
- "install": InstallModule,
686
- "remove": UninstallModule,
687
- }
688
-
689
-
690
- def build_usage(handler_map: Mapping[str, object]) -> str:
691
- arg_names = "|".join(handler_map)
692
- lines = [
693
- " %-10s: %s" % (arg, handler.__doc__) for arg, handler in handler_map.items()
694
- ]
695
- return f"%prog [options] [{arg_names}]\ncommands:\n" + "\n".join(lines)
696
-
697
-
698
- def MergeStandardOptions(options, params):
699
- """
700
- Take an options object generated by the command line and merge
701
- the values into the IISParameters object.
702
- """
703
- pass
704
-
705
-
706
- # We support 2 ways of extending our command-line/install support.
707
- # * Many of the installation items allow you to specify "PreInstall",
708
- # "PostInstall", "PreRemove" and "PostRemove" hooks
709
- # All hooks are called with the 'params' object being operated on, and
710
- # the 'optparser' options for this session (ie, the command-line options)
711
- # PostInstall for VirtualDirectories and Filters both have an additional
712
- # param - the ADSI object just created.
713
- # * You can pass your own option parser for us to use, and/or define a map
714
- # with your own custom arg handlers. It is a map of 'arg'->function.
715
- # The function is called with (options, log_fn, arg). The function's
716
- # docstring is used in the usage output.
717
- def HandleCommandLine(
718
- params,
719
- argv=None,
720
- conf_module_name=None,
721
- default_arg="install",
722
- opt_parser=None,
723
- custom_arg_handlers={},
724
- ):
725
- """Perform installation or removal of an ISAPI filter or extension.
726
-
727
- This module handles standard command-line options and configuration
728
- information, and installs, removes or updates the configuration of an
729
- ISAPI filter or extension.
730
-
731
- You must pass your configuration information in params - all other
732
- arguments are optional, and allow you to configure the installation
733
- process.
734
- """
735
- global verbose
736
- from optparse import OptionParser
737
-
738
- argv = argv or sys.argv
739
- if not conf_module_name:
740
- conf_module_name = sys.argv[0]
741
- # convert to a long name so that if we were somehow registered with
742
- # the "short" version but unregistered with the "long" version we
743
- # still work (that will depend on exactly how the installer was
744
- # started)
745
- try:
746
- conf_module_name = win32api.GetLongPathName(conf_module_name)
747
- except win32api.error as exc:
748
- log(
749
- 2,
750
- f"Couldn't determine the long name for {conf_module_name!r}: {exc}",
751
- )
752
-
753
- if opt_parser is None:
754
- # Build our own parser.
755
- parser = OptionParser(usage="")
756
- else:
757
- # The caller is providing their own filter, presumably with their
758
- # own options all setup.
759
- parser = opt_parser
760
-
761
- # build a usage string if we don't have one.
762
- if not parser.get_usage():
763
- all_handlers = standard_arguments.copy()
764
- all_handlers.update(custom_arg_handlers)
765
- parser.set_usage(build_usage(all_handlers))
766
-
767
- # allow the user to use uninstall as a synonym for remove if it wasn't
768
- # defined by the custom arg handlers.
769
- all_handlers.setdefault("uninstall", all_handlers["remove"])
770
-
771
- parser.add_option(
772
- "-q",
773
- "--quiet",
774
- action="store_false",
775
- dest="verbose",
776
- default=True,
777
- help="don't print status messages to stdout",
778
- )
779
- parser.add_option(
780
- "-v",
781
- "--verbosity",
782
- action="count",
783
- dest="verbose",
784
- default=1,
785
- help="increase the verbosity of status messages",
786
- )
787
- parser.add_option(
788
- "",
789
- "--server",
790
- action="store",
791
- help="Specifies the IIS server to install/uninstall on."
792
- f" Default is '{_IIS_OBJECT}/1'",
793
- )
794
-
795
- (options, args) = parser.parse_args(argv[1:])
796
- MergeStandardOptions(options, params)
797
- verbose = options.verbose
798
- if not args:
799
- args = [default_arg]
800
- try:
801
- for arg in args:
802
- handler = all_handlers[arg]
803
- handler(conf_module_name, params, options, log)
804
- except (ItemNotFound, InstallationError) as details:
805
- if options.verbose > 1:
806
- traceback.print_exc()
807
- print(f"{details.__class__.__name__}: {details}")
808
- except KeyError:
809
- parser.error("Invalid arg '%s'" % arg)