py2docfx 0.1.13.dev2016723__py3-none-any.whl → 0.1.13.dev2021865__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 (346) hide show
  1. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/_modified.py +26 -4
  2. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +2 -603
  3. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/archive_util.py +48 -18
  4. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/ccompiler.py +17 -1257
  5. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/cmd.py +133 -41
  6. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/bdist.py +19 -8
  7. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py +2 -1
  8. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py +6 -5
  9. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build.py +8 -4
  10. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_clib.py +8 -7
  11. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_ext.py +32 -13
  12. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_py.py +10 -9
  13. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +3 -14
  14. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/check.py +1 -1
  15. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/clean.py +2 -1
  16. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/config.py +1 -8
  17. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/install.py +22 -19
  18. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/install_data.py +4 -3
  19. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/install_headers.py +1 -1
  20. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/install_lib.py +11 -7
  21. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/install_scripts.py +4 -3
  22. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/command/sdist.py +22 -16
  23. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compat/__init__.py +6 -1
  24. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +1391 -0
  25. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/cygwin.py +340 -0
  26. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/errors.py +24 -0
  27. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +614 -0
  28. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/{tests/test_ccompiler.py → compilers/C/tests/test_base.py} +9 -19
  29. py2docfx/venv/{venv1/Lib/site-packages/setuptools/_distutils/tests/test_cygwinccompiler.py → basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_cygwin.py} +7 -12
  30. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/{tests/test_mingwccompiler.py → compilers/C/tests/test_mingw.py} +12 -20
  31. py2docfx/venv/{venv1/Lib/site-packages/setuptools/_distutils/tests/test_msvccompiler.py → basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_msvc.py} +11 -12
  32. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/{tests/test_unixccompiler.py → compilers/C/tests/test_unix.py} +5 -5
  33. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +409 -0
  34. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/compilers/C/zos.py +230 -0
  35. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py +20 -328
  36. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/dist.py +148 -80
  37. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/errors.py +11 -27
  38. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/extension.py +19 -16
  39. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/filelist.py +80 -15
  40. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/spawn.py +22 -5
  41. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/sysconfig.py +32 -7
  42. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +13 -0
  43. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/tests/test_sdist.py +1 -1
  44. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/unixccompiler.py +2 -401
  45. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/util.py +38 -23
  46. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_distutils/zosccompiler.py +2 -228
  47. py2docfx/venv/basevenv/Lib/site-packages/setuptools/_static.py +1 -1
  48. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/editable_wheel.py +3 -3
  49. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/install.py +1 -1
  50. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +2 -0
  51. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_build_py.py +1 -1
  52. py2docfx/venv/basevenv/Lib/site-packages/setuptools/unicode_utils.py +1 -1
  53. py2docfx/venv/venv1/Lib/site-packages/adodbapi/__init__.py +2 -1
  54. py2docfx/venv/venv1/Lib/site-packages/adodbapi/ado_consts.py +3 -1
  55. py2docfx/venv/venv1/Lib/site-packages/adodbapi/adodbapi.py +22 -26
  56. py2docfx/venv/venv1/Lib/site-packages/adodbapi/apibase.py +3 -4
  57. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_print.py +1 -1
  58. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_table_names.py +1 -1
  59. py2docfx/venv/venv1/Lib/site-packages/adodbapi/process_connect_string.py +7 -7
  60. py2docfx/venv/venv1/Lib/site-packages/adodbapi/setup.py +2 -2
  61. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitest.py +21 -73
  62. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitestconfig.py +1 -1
  63. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/dbapi20.py +11 -17
  64. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/setuptestframework.py +2 -1
  65. py2docfx/venv/venv1/Lib/site-packages/isapi/install.py +8 -11
  66. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector.py +1 -1
  67. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_asynch.py +1 -1
  68. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_with_filter.py +2 -1
  69. py2docfx/venv/venv1/Lib/site-packages/isapi/simple.py +1 -0
  70. py2docfx/venv/venv1/Lib/site-packages/isapi/threaded_extension.py +1 -0
  71. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/basictimerapp.py +1 -1
  72. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/customprint.py +1 -3
  73. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/demoutils.py +1 -3
  74. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/cmdserver.py +2 -5
  75. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/guidemo.py +14 -41
  76. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/objdoc.py +1 -1
  77. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/demoutils.py +1 -3
  78. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/flash.py +1 -1
  79. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxserialtest.py +1 -2
  80. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxtest.py +1 -2
  81. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/webbrowser.py +3 -3
  82. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/openGLDemo.py +57 -12
  83. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/toolbar.py +0 -1
  84. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/configui.py +1 -1
  85. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgcon.py +0 -1
  86. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/debugger.py +7 -8
  87. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/fail.py +1 -1
  88. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/ideoptions.py +7 -10
  89. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/list.py +11 -8
  90. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/login.py +0 -1
  91. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/DockingBar.py +0 -1
  92. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/app.py +19 -22
  93. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dbgcommands.py +2 -3
  94. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/ModuleBrowser.py +1 -1
  95. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/__init__.py +3 -1
  96. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/document.py +0 -1
  97. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/editor.py +6 -6
  98. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/vss.py +2 -2
  99. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/help.py +2 -1
  100. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/interact.py +1 -1
  101. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpyapp.py +5 -7
  102. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpydde.py +7 -2
  103. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/scriptutils.py +4 -6
  104. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/sgrepmdi.py +13 -22
  105. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/startup.py +1 -1
  106. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/stdin.py +1 -0
  107. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/toolmenu.py +0 -2
  108. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoIndent.py +3 -3
  109. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/CallTips.py +1 -3
  110. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/activex.py +1 -2
  111. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/dialog.py +7 -10
  112. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/IDLEenvironment.py +1 -5
  113. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/bindings.py +4 -2
  114. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/config.py +3 -5
  115. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/configui.py +2 -3
  116. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/document.py +1 -1
  117. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/formatter.py +3 -3
  118. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/keycodes.py +2 -2
  119. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/scintillacon.py +1178 -78
  120. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/view.py +17 -21
  121. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browser.py +6 -18
  122. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/hierlist.py +2 -2
  123. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/_modified.py +26 -4
  124. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +2 -603
  125. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/archive_util.py +48 -18
  126. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/ccompiler.py +17 -1257
  127. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/cmd.py +133 -41
  128. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/bdist.py +19 -8
  129. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py +2 -1
  130. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py +6 -5
  131. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build.py +8 -4
  132. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_clib.py +8 -7
  133. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_ext.py +32 -13
  134. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_py.py +10 -9
  135. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +3 -14
  136. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/check.py +1 -1
  137. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/clean.py +2 -1
  138. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/config.py +1 -8
  139. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/install.py +22 -19
  140. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/install_data.py +4 -3
  141. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/install_headers.py +1 -1
  142. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/install_lib.py +11 -7
  143. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/install_scripts.py +4 -3
  144. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/command/sdist.py +22 -16
  145. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compat/__init__.py +6 -1
  146. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/base.py +1391 -0
  147. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/cygwin.py +340 -0
  148. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/errors.py +24 -0
  149. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/msvc.py +614 -0
  150. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/{tests/test_ccompiler.py → compilers/C/tests/test_base.py} +9 -19
  151. py2docfx/venv/{basevenv/Lib/site-packages/setuptools/_distutils/tests/test_cygwinccompiler.py → venv1/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_cygwin.py} +7 -12
  152. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/{tests/test_mingwccompiler.py → compilers/C/tests/test_mingw.py} +12 -20
  153. py2docfx/venv/{basevenv/Lib/site-packages/setuptools/_distutils/tests/test_msvccompiler.py → venv1/Lib/site-packages/setuptools/_distutils/compilers/C/tests/test_msvc.py} +11 -12
  154. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/{tests/test_unixccompiler.py → compilers/C/tests/test_unix.py} +5 -5
  155. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/unix.py +409 -0
  156. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/compilers/C/zos.py +230 -0
  157. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py +20 -328
  158. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/dist.py +148 -80
  159. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/errors.py +11 -27
  160. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/extension.py +19 -16
  161. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/filelist.py +80 -15
  162. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/spawn.py +22 -5
  163. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/sysconfig.py +32 -7
  164. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +13 -0
  165. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/tests/test_sdist.py +1 -1
  166. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/unixccompiler.py +2 -401
  167. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/util.py +38 -23
  168. py2docfx/venv/venv1/Lib/site-packages/setuptools/_distutils/zosccompiler.py +2 -228
  169. py2docfx/venv/venv1/Lib/site-packages/setuptools/_static.py +1 -1
  170. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/editable_wheel.py +3 -3
  171. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/install.py +1 -1
  172. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +2 -0
  173. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_build_py.py +1 -1
  174. py2docfx/venv/venv1/Lib/site-packages/setuptools/unicode_utils.py +1 -1
  175. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtFormatMessage.py +1 -1
  176. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_push.py +8 -1
  177. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/GetSaveFileName.py +8 -8
  178. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/c_extension/setup.py +1 -1
  179. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeclient.py +1 -1
  180. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeserver.py +1 -1
  181. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/getfilever.py +1 -1
  182. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/runproc.py +2 -2
  183. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/rastest.py +4 -6
  184. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/GetTokenInformation.py +4 -4
  185. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/account_rights.py +0 -2
  186. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/explicit_entries.py +0 -1
  187. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/get_policy_info.py +0 -3
  188. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/list_rights.py +0 -2
  189. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/localized_names.py +7 -2
  190. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/query_information.py +1 -1
  191. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_audit.py +1 -2
  192. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_owner.py +0 -1
  193. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_policy_info.py +0 -3
  194. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setkernelobjectsecurity.py +0 -1
  195. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setsecurityinfo.py +0 -1
  196. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setuserobjectsecurity.py +0 -1
  197. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/fetch_url.py +3 -3
  198. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/simple_auth.py +3 -3
  199. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/socket_server.py +1 -2
  200. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestService.py +10 -9
  201. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestServiceClient.py +6 -3
  202. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboardDemo.py +17 -5
  203. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32comport_demo.py +32 -2
  204. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32console_demo.py +1 -4
  205. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_devicenotify.py +0 -1
  206. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_menu.py +60 -5
  207. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_taskbar.py +1 -1
  208. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32netdemo.py +2 -5
  209. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32ts_logoff_disconnected.py +1 -1
  210. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/testwnet.py +1 -1
  211. py2docfx/venv/venv1/Lib/site-packages/win32/lib/commctrl.py +1 -1
  212. py2docfx/venv/venv1/Lib/site-packages/win32/lib/netbios.py +8 -10
  213. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_bootstrap.py +2 -10
  214. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_testutil.py +2 -2
  215. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywintypes.py +1 -1
  216. py2docfx/venv/venv1/Lib/site-packages/win32/lib/regutil.py +1 -1
  217. py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspi.py +3 -3
  218. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win2kras.py +14 -7
  219. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32con.py +16 -35
  220. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32cryptcon.py +1 -4
  221. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32evtlogutil.py +1 -2
  222. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32gui_struct.py +6 -6
  223. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhquery.py +10 -11
  224. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhutil.py +5 -5
  225. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32rcparser.py +1 -0
  226. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32serviceutil.py +4 -6
  227. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32timezone.py +304 -121
  228. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32verstamp.py +1 -1
  229. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winerror.py +4926 -604
  230. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winxptheme.py +1 -1
  231. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/h2py.py +194 -0
  232. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/pywin32_postinstall.py +733 -0
  233. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/pywin32_testall.py +120 -0
  234. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/regsetup.py +4 -7
  235. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/setup_d.py +1 -1
  236. py2docfx/venv/venv1/Lib/site-packages/win32/test/handles.py +13 -5
  237. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_clipboard.py +12 -1
  238. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_sspi.py +1 -1
  239. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32api.py +8 -4
  240. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32clipboard.py +2 -3
  241. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32cred.py +0 -1
  242. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32crypt.py +16 -3
  243. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32file.py +24 -8
  244. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32gui.py +0 -1
  245. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32guistruct.py +2 -5
  246. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32inet.py +23 -6
  247. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32net.py +0 -1
  248. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32ts.py +19 -0
  249. py2docfx/venv/venv1/Lib/site-packages/win32/winxpgui.py +3 -11
  250. py2docfx/venv/venv1/Lib/site-packages/win32com/client/CLSIDToClass.py +3 -1
  251. py2docfx/venv/venv1/Lib/site-packages/win32com/client/__init__.py +97 -65
  252. py2docfx/venv/venv1/Lib/site-packages/win32com/client/build.py +24 -24
  253. py2docfx/venv/venv1/Lib/site-packages/win32com/client/combrowse.py +17 -33
  254. py2docfx/venv/venv1/Lib/site-packages/win32com/client/dynamic.py +14 -14
  255. py2docfx/venv/venv1/Lib/site-packages/win32com/client/gencache.py +30 -12
  256. py2docfx/venv/venv1/Lib/site-packages/win32com/client/genpy.py +50 -98
  257. py2docfx/venv/venv1/Lib/site-packages/win32com/client/makepy.py +12 -8
  258. py2docfx/venv/venv1/Lib/site-packages/win32com/client/selecttlb.py +3 -4
  259. py2docfx/venv/venv1/Lib/site-packages/win32com/client/util.py +1 -1
  260. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/dump_clipboard.py +1 -1
  261. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelAddin.py +1 -1
  262. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelRTDServer.py +1 -1
  263. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/iebutton.py +0 -3
  264. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/ietoolbar.py +1 -1
  265. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/outlookAddin.py +1 -3
  266. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegw.py +48 -56
  267. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwenum.py +2 -6
  268. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwparse.py +9 -11
  269. py2docfx/venv/venv1/Lib/site-packages/win32com/olectl.py +1 -1
  270. py2docfx/venv/venv1/Lib/site-packages/win32com/server/connect.py +2 -2
  271. py2docfx/venv/venv1/Lib/site-packages/win32com/server/dispatcher.py +20 -24
  272. py2docfx/venv/venv1/Lib/site-packages/win32com/server/exception.py +8 -8
  273. py2docfx/venv/venv1/Lib/site-packages/win32com/server/policy.py +4 -18
  274. py2docfx/venv/venv1/Lib/site-packages/win32com/server/register.py +5 -6
  275. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/dictionary.py +2 -5
  276. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/interp.py +7 -7
  277. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/test_pycomtest.py +0 -1
  278. py2docfx/venv/venv1/Lib/site-packages/win32com/test/GenTestScripts.py +2 -4
  279. py2docfx/venv/venv1/Lib/site-packages/win32com/test/errorSemantics.py +3 -3
  280. py2docfx/venv/venv1/Lib/site-packages/win32com/test/pippo_server.py +1 -4
  281. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testADOEvents.py +1 -1
  282. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAXScript.py +1 -2
  283. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDictionary.py +4 -3
  284. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDynamic.py +3 -5
  285. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExchange.py +2 -7
  286. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGatewayAddresses.py +1 -1
  287. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testIterators.py +1 -1
  288. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOffice.py +40 -57
  289. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOfficeEvents.py +3 -3
  290. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPersist.py +7 -7
  291. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPippo.py +2 -3
  292. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPyComTest.py +143 -7
  293. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testServers.py +1 -2
  294. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testall.py +1 -2
  295. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testmakepy.py +1 -2
  296. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvb.py +12 -8
  297. py2docfx/venv/venv1/Lib/site-packages/win32com/test/util.py +1 -3
  298. py2docfx/venv/venv1/Lib/site-packages/win32com/universal.py +1 -3
  299. py2docfx/venv/venv1/Lib/site-packages/win32com/util.py +1 -1
  300. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/scp.py +1 -1
  301. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/search.py +0 -1
  302. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditSecurity.py +1 -24
  303. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditServiceSecurity.py +0 -20
  304. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/adb.py +2 -8
  305. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/codecontainer.py +16 -12
  306. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/contexts.py +1 -3
  307. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/debugger.py +2 -2
  308. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/documents.py +2 -3
  309. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/dump.py +2 -4
  310. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/expressions.py +2 -2
  311. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/util.py +7 -14
  312. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/debug.py +2 -14
  313. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/error.py +4 -5
  314. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/framework.py +5 -5
  315. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pydumper.py +0 -1
  316. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript.py +5 -10
  317. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/scriptdispatch.py +3 -4
  318. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/axsite.py +1 -2
  319. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/leakTest.py +2 -3
  320. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost4Dbg.py +0 -3
  321. py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/test_bits.py +3 -3
  322. py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/demo/filterDemo.py +1 -1
  323. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/demos/mapisend.py +1 -1
  324. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/emsabtags.py +1 -0
  325. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapitags.py +1 -3
  326. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapiutil.py +2 -2
  327. py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/test/testpropsys.py +1 -1
  328. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IFileOperationProgressSink.py +1 -1
  329. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/ITransferAdviseSink.py +5 -3
  330. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/column_provider.py +0 -1
  331. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/copy_hook.py +1 -1
  332. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/empty_volume_cache.py +1 -1
  333. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/folder_view.py +2 -2
  334. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/icon_handler.py +1 -2
  335. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/shell_view.py +4 -5
  336. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_2.py +0 -1
  337. py2docfx/venv/venv1/Scripts/pywin32_postinstall.py +77 -122
  338. py2docfx/venv/venv1/Scripts/pywin32_testall.py +4 -9
  339. {py2docfx-0.1.13.dev2016723.dist-info → py2docfx-0.1.13.dev2021865.dist-info}/METADATA +1 -1
  340. {py2docfx-0.1.13.dev2016723.dist-info → py2docfx-0.1.13.dev2021865.dist-info}/RECORD +342 -330
  341. py2docfx/venv/venv1/Lib/site-packages/docs/conf.py +0 -384
  342. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/__init__.py +0 -0
  343. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/mdi_pychecker.py +0 -850
  344. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testNetscape.py +0 -24
  345. {py2docfx-0.1.13.dev2016723.dist-info → py2docfx-0.1.13.dev2021865.dist-info}/WHEEL +0 -0
  346. {py2docfx-0.1.13.dev2016723.dist-info → py2docfx-0.1.13.dev2021865.dist-info}/top_level.txt +0 -0
@@ -16,11 +16,11 @@ The makepy command line etc handling is also getting large enough in its own rig
16
16
  import os
17
17
  import sys
18
18
  import time
19
+ from itertools import chain
19
20
 
20
21
  import pythoncom
21
- import win32com
22
22
 
23
- from . import build
23
+ from . import build, gencache
24
24
 
25
25
  makepy_version = "0.5.01" # Written to generated file.
26
26
 
@@ -90,14 +90,14 @@ def MakeEventMethodName(eventName):
90
90
 
91
91
  def WriteSinkEventMap(obj, stream):
92
92
  print("\t_dispid_to_func_ = {", file=stream)
93
- for name, entry in (
94
- list(obj.propMapGet.items())
95
- + list(obj.propMapPut.items())
96
- + list(obj.mapFuncs.items())
93
+ for entry in chain(
94
+ obj.propMapGet.values(),
95
+ obj.propMapPut.values(),
96
+ obj.mapFuncs.values(),
97
97
  ):
98
- fdesc = entry.desc
98
+ memid = entry.desc.memid
99
99
  print(
100
- '\t\t%9d : "%s",' % (fdesc.memid, MakeEventMethodName(entry.names[0])),
100
+ '\t\t%9d : "%s",' % (memid, MakeEventMethodName(entry.names[0])),
101
101
  file=stream,
102
102
  )
103
103
  print("\t\t}", file=stream)
@@ -112,7 +112,7 @@ class WritableItem:
112
112
  return self.order < other.order
113
113
 
114
114
  def __repr__(self):
115
- return "OleItem: doc=%s, order=%d" % (repr(self.doc), self.order)
115
+ return f"OleItem: doc={self.doc!r}, order={self.order}"
116
116
 
117
117
 
118
118
  class RecordItem(build.OleItem, WritableItem):
@@ -215,9 +215,7 @@ class EnumerationItem(build.OleItem, WritableItem):
215
215
  num = 0
216
216
  enumName = self.doc[0]
217
217
  # Write in name alpha order
218
- names = list(self.mapVars.keys())
219
- names.sort()
220
- for name in names:
218
+ for name in sorted(self.mapVars):
221
219
  entry = self.mapVars[name]
222
220
  vdesc = entry.desc
223
221
  if vdesc[4] == pythoncom.VAR_CONST:
@@ -234,10 +232,7 @@ class EnumerationItem(build.OleItem, WritableItem):
234
232
  # Sanitize it, in case the repr contains its own quotes. (??? line breaks too ???)
235
233
  use = use.replace('"', "'")
236
234
  use = (
237
- '"'
238
- + use
239
- + '"'
240
- + " # This VARIANT type cannot be converted automatically"
235
+ f'"{use}" # This VARIANT type cannot be converted automatically'
241
236
  )
242
237
  print(
243
238
  "\t%-30s=%-10s # from enum %s"
@@ -343,11 +338,11 @@ class DispatchItem(build.DispatchItem, WritableItem):
343
338
  )
344
339
  except pythoncom.com_error:
345
340
  pass
346
- print("\tCLSID = " + repr(self.clsid), file=stream)
341
+ print(f"\tCLSID = {self.clsid!r}", file=stream)
347
342
  if self.coclass_clsid is None:
348
343
  print("\tcoclass_clsid = None", file=stream)
349
344
  else:
350
- print("\tcoclass_clsid = " + repr(self.coclass_clsid), file=stream)
345
+ print(f"\tcoclass_clsid = {self.coclass_clsid!r}", file=stream)
351
346
  print(file=stream)
352
347
  self.bWritten = 1
353
348
 
@@ -365,11 +360,11 @@ class DispatchItem(build.DispatchItem, WritableItem):
365
360
  )
366
361
  except pythoncom.com_error:
367
362
  pass
368
- print("\tCLSID = CLSID_Sink = " + repr(self.clsid), file=stream)
363
+ print(f"\tCLSID = CLSID_Sink = {self.clsid!r}", file=stream)
369
364
  if self.coclass_clsid is None:
370
365
  print("\tcoclass_clsid = None", file=stream)
371
366
  else:
372
- print("\tcoclass_clsid = " + repr(self.coclass_clsid), file=stream)
367
+ print(f"\tcoclass_clsid = {self.coclass_clsid!r}", file=stream)
373
368
  print("\t_public_methods_ = [] # For COM Server support", file=stream)
374
369
  WriteSinkEventMap(self, stream)
375
370
  print(file=stream)
@@ -419,10 +414,8 @@ class DispatchItem(build.DispatchItem, WritableItem):
419
414
  "\t# If you create handlers, they should have the following prototypes:",
420
415
  file=stream,
421
416
  )
422
- for name, entry in (
423
- list(self.propMapGet.items())
424
- + list(self.propMapPut.items())
425
- + list(self.mapFuncs.items())
417
+ for entry in chain(
418
+ self.propMapGet.values(), self.propMapPut.values(), self.mapFuncs.values()
426
419
  ):
427
420
  fdesc = entry.desc
428
421
  methName = MakeEventMethodName(entry.names[0])
@@ -449,17 +442,14 @@ class DispatchItem(build.DispatchItem, WritableItem):
449
442
 
450
443
  def WriteClassBody(self, generator):
451
444
  stream = generator.file
452
- # Write in alpha order.
453
- names = list(self.mapFuncs.keys())
454
- names.sort()
455
445
  specialItems = {
456
446
  "count": None,
457
447
  "item": None,
458
448
  "value": None,
459
449
  "_newenum": None,
460
450
  } # If found, will end up with (entry, invoke_tupe)
461
- itemCount = None
462
- for name in names:
451
+ # Write in alpha order.
452
+ for name in sorted(self.mapFuncs):
463
453
  entry = self.mapFuncs[name]
464
454
  assert entry.desc.desckind == pythoncom.DESCKIND_FUNCDESC
465
455
  # skip [restricted] methods, unless it is the
@@ -498,9 +488,7 @@ class DispatchItem(build.DispatchItem, WritableItem):
498
488
  for line in ret:
499
489
  print(line, file=stream)
500
490
  print("\t_prop_map_get_ = {", file=stream)
501
- names = list(self.propMap.keys())
502
- names.sort()
503
- for key in names:
491
+ for key in sorted(self.propMap):
504
492
  entry = self.propMap[key]
505
493
  if generator.bBuildHidden or not entry.hidden:
506
494
  resultName = entry.GetResultName()
@@ -545,9 +533,7 @@ class DispatchItem(build.DispatchItem, WritableItem):
545
533
  f'\t\t"{build.MakePublicAttributeName(key)}": {mapEntry},',
546
534
  file=stream,
547
535
  )
548
- names = list(self.propMapGet.keys())
549
- names.sort()
550
- for key in names:
536
+ for key in sorted(self.propMapGet):
551
537
  entry = self.propMapGet[key]
552
538
  if generator.bBuildHidden or not entry.hidden:
553
539
  if entry.GetResultName():
@@ -597,9 +583,7 @@ class DispatchItem(build.DispatchItem, WritableItem):
597
583
 
598
584
  print("\t_prop_map_put_ = {", file=stream)
599
585
  # These are "Invoke" args
600
- names = list(self.propMap.keys())
601
- names.sort()
602
- for key in names:
586
+ for key in sorted(self.propMap):
603
587
  entry = self.propMap[key]
604
588
  if generator.bBuildHidden or not entry.hidden:
605
589
  lkey = key.lower()
@@ -621,9 +605,7 @@ class DispatchItem(build.DispatchItem, WritableItem):
621
605
  file=stream,
622
606
  )
623
607
 
624
- names = list(self.propMapPut.keys())
625
- names.sort()
626
- for key in names:
608
+ for key in sorted(self.propMapPut):
627
609
  entry = self.propMapPut[key]
628
610
  if generator.bBuildHidden or not entry.hidden:
629
611
  details = entry.desc
@@ -806,14 +788,14 @@ class CoClassItem(build.OleItem, WritableItem):
806
788
  if item.bWritten:
807
789
  key = item.python_name
808
790
  else:
809
- key = repr(str(item.clsid)) # really the iid.
810
- print("\t\t%s," % (key), file=stream)
791
+ key = f"'{item.clsid}'" # really the iid.
792
+ print(f"\t\t{key},", file=stream)
811
793
  print("\t]", file=stream)
812
794
  if defItem:
813
795
  if defItem.bWritten:
814
796
  defName = defItem.python_name
815
797
  else:
816
- defName = repr(str(defItem.clsid)) # really the iid.
798
+ defName = f"'{defItem.clsid}'" # really the iid.
817
799
  print(f"\tdefault_source = {defName}", file=stream)
818
800
  print("\tcoclass_interfaces = [", file=stream)
819
801
  defItem = None
@@ -824,14 +806,14 @@ class CoClassItem(build.OleItem, WritableItem):
824
806
  if item.bWritten:
825
807
  key = item.python_name
826
808
  else:
827
- key = repr(str(item.clsid)) # really the iid.
809
+ key = f"'{item.clsid}'" # really the iid.
828
810
  print(f"\t\t{key},", file=stream)
829
811
  print("\t]", file=stream)
830
812
  if defItem:
831
813
  if defItem.bWritten:
832
814
  defName = defItem.python_name
833
815
  else:
834
- defName = repr(str(defItem.clsid)) # really the iid.
816
+ defName = f"'{defItem.clsid}'" # really the iid.
835
817
  print(f"\tdefault_interface = {defName}", file=stream)
836
818
  self.bWritten = 1
837
819
  print(file=stream)
@@ -983,9 +965,7 @@ class Generator:
983
965
  return oleItem, vtableItem
984
966
 
985
967
  def BuildOleItemsFromType(self):
986
- assert (
987
- self.bBuildHidden
988
- ), "This code doesn't look at the hidden flag - I thought everyone set it true!?!?!"
968
+ assert self.bBuildHidden, "This code doesn't look at the hidden flag - I thought everyone set it true!?!?!"
989
969
  oleItems = {}
990
970
  enumItems = {}
991
971
  recordItems = {}
@@ -1036,35 +1016,15 @@ class Generator:
1036
1016
 
1037
1017
  def finish_writer(self, filename, f, worked):
1038
1018
  f.close()
1039
- try:
1040
- os.unlink(filename)
1041
- except OSError:
1042
- pass
1043
1019
  temp_filename = self.get_temp_filename(filename)
1044
1020
  if worked:
1021
+ os.replace(temp_filename, filename)
1022
+ else:
1045
1023
  try:
1046
- os.rename(temp_filename, filename)
1024
+ os.unlink(filename)
1025
+ os.unlink(temp_filename)
1047
1026
  except OSError:
1048
- # If we are really unlucky, another process may have written the
1049
- # file in between our calls to os.unlink and os.rename. So try
1050
- # again, but only once.
1051
- # There are still some race conditions, but they seem difficult to
1052
- # fix, and they probably occur much less frequently:
1053
- # * The os.rename failure could occur more than once if more than
1054
- # two processes are involved.
1055
- # * In between os.unlink and os.rename, another process could try
1056
- # to import the module, having seen that it already exists.
1057
- # * If another process starts a COM server while we are still
1058
- # generating __init__.py, that process sees that the folder
1059
- # already exists and assumes that __init__.py is already there
1060
- # as well.
1061
- try:
1062
- os.unlink(filename)
1063
- except OSError:
1064
- pass
1065
- os.rename(temp_filename, filename)
1066
- else:
1067
- os.unlink(temp_filename)
1027
+ pass
1068
1028
 
1069
1029
  def get_temp_filename(self, filename):
1070
1030
  return "%s.%d.temp" % (filename, os.getpid())
@@ -1111,7 +1071,7 @@ class Generator:
1111
1071
 
1112
1072
  print(build._makeDocString(docDesc), file=self.file)
1113
1073
 
1114
- print("makepy_version =", repr(makepy_version), file=self.file)
1074
+ print(f"makepy_version = {makepy_version!r}", file=self.file)
1115
1075
  print(f"python_version = 0x{sys.hexversion:x}", file=self.file)
1116
1076
  print(file=self.file)
1117
1077
  print(
@@ -1133,10 +1093,10 @@ class Generator:
1133
1093
  print("defaultNamedNotOptArg=pythoncom.Empty", file=self.file)
1134
1094
  print("defaultUnnamedArg=pythoncom.Empty", file=self.file)
1135
1095
  print(file=self.file)
1136
- print("CLSID = " + repr(la[0]), file=self.file)
1137
- print("MajorVersion = " + str(la[3]), file=self.file)
1138
- print("MinorVersion = " + str(la[4]), file=self.file)
1139
- print("LibraryFlags = " + str(la[5]), file=self.file)
1096
+ print(f"CLSID = {la[0]!r}", file=self.file)
1097
+ print(f"MajorVersion = {la[3]}", file=self.file)
1098
+ print(f"MinorVersion = {la[4]}", file=self.file)
1099
+ print(f"LibraryFlags = {la[5]}", file=self.file)
1140
1100
  print("LCID = " + hex(la[1]), file=self.file)
1141
1101
  print(file=self.file)
1142
1102
 
@@ -1160,10 +1120,8 @@ class Generator:
1160
1120
  # Generate the constants and their support.
1161
1121
  if enumItems:
1162
1122
  print("class constants:", file=stream)
1163
- items = list(enumItems.values())
1164
- items.sort()
1165
1123
  num_written = 0
1166
- for oleitem in items:
1124
+ for oleitem in sorted(enumItems.values()):
1167
1125
  num_written += oleitem.WriteEnumerationItems(stream)
1168
1126
  self.progress.Tick()
1169
1127
  if not num_written:
@@ -1171,15 +1129,11 @@ class Generator:
1171
1129
  print(file=stream)
1172
1130
 
1173
1131
  if self.generate_type == GEN_FULL:
1174
- items = [l for l in oleItems.values() if l is not None]
1175
- items.sort()
1176
- for oleitem in items:
1132
+ for oleitem in sorted(filter(None, oleItems.values())):
1177
1133
  self.progress.Tick()
1178
1134
  oleitem.WriteClass(self)
1179
1135
 
1180
- items = list(vtableItems.values())
1181
- items.sort()
1182
- for oleitem in items:
1136
+ for oleitem in sorted(vtableItems.values()):
1183
1137
  self.progress.Tick()
1184
1138
  oleitem.WriteClass(self)
1185
1139
  else:
@@ -1187,18 +1141,15 @@ class Generator:
1187
1141
 
1188
1142
  print("RecordMap = {", file=stream)
1189
1143
  for record in recordItems.values():
1144
+ record_str = f"{record.doc[0]!r}: '{record.clsid}',"
1190
1145
  if record.clsid == pythoncom.IID_NULL:
1191
1146
  print(
1192
- "\t###{}: {}, # Record disabled because it doesn't have a non-null GUID".format(
1193
- repr(record.doc[0]), repr(str(record.clsid))
1194
- ),
1147
+ f"\t###{record_str}",
1148
+ "# Record disabled because it doesn't have a non-null GUID",
1195
1149
  file=stream,
1196
1150
  )
1197
1151
  else:
1198
- print(
1199
- f"\t{repr(record.doc[0])}: {repr(str(record.clsid))},",
1200
- file=stream,
1201
- )
1152
+ print(f"\t{record_str}", file=stream)
1202
1153
  print("}", file=stream)
1203
1154
  print(file=stream)
1204
1155
 
@@ -1208,7 +1159,7 @@ class Generator:
1208
1159
  for item in oleItems.values():
1209
1160
  if item is not None and item.bWritten:
1210
1161
  print(
1211
- f"\t'{str(item.clsid)}' : {item.python_name},",
1162
+ f"\t'{item.clsid}' : {item.python_name},",
1212
1163
  file=stream,
1213
1164
  )
1214
1165
  print("}", file=stream)
@@ -1230,7 +1181,7 @@ class Generator:
1230
1181
  for item in oleItems.values():
1231
1182
  if item is not None:
1232
1183
  print(
1233
- f"\t'{str(item.clsid)}' : {repr(item.python_name)},",
1184
+ f"\t'{item.clsid}' : {item.python_name!r},",
1234
1185
  file=stream,
1235
1186
  )
1236
1187
  print("}", file=stream)
@@ -1355,7 +1306,8 @@ class Generator:
1355
1306
  self.progress.Tick()
1356
1307
  worked = True
1357
1308
  finally:
1358
- self.finish_writer(out_name, self.file, worked)
1309
+ with gencache.ModuleMutex(self.base_mod_name.split(".")[-1]):
1310
+ self.finish_writer(out_name, self.file, worked)
1359
1311
  self.file = None
1360
1312
  finally:
1361
1313
  self.progress.Finished()
@@ -15,11 +15,12 @@
15
15
  """Generate a .py file from an OLE TypeLibrary file.
16
16
 
17
17
 
18
- This module is concerned only with the actual writing of
19
- a .py file. It draws on the @build@ module, which builds
20
- the knowledge of a COM interface.
18
+ This module is concerned only with the actual writing of
19
+ a .py file. It draws on the @build@ module, which builds
20
+ the knowledge of a COM interface.
21
21
 
22
22
  """
23
+
23
24
  usageHelp = """ \
24
25
 
25
26
  Usage:
@@ -292,10 +293,11 @@ def GenerateFromTypeLibSpec(
292
293
  for typelib, info in typelibs:
293
294
  gen = genpy.Generator(typelib, info.dll, progress, bBuildHidden=bBuildHidden)
294
295
 
296
+ this_name = gencache.GetGeneratedFileName(
297
+ info.clsid, info.lcid, info.major, info.minor
298
+ )
299
+
295
300
  if file is None:
296
- this_name = gencache.GetGeneratedFileName(
297
- info.clsid, info.lcid, info.major, info.minor
298
- )
299
301
  full_name = os.path.join(gencache.GetGeneratePath(), this_name)
300
302
  if bForDemand:
301
303
  try:
@@ -326,7 +328,8 @@ def GenerateFromTypeLibSpec(
326
328
  worked = True
327
329
  finally:
328
330
  if file is None:
329
- gen.finish_writer(outputName, fileUse, worked)
331
+ with gencache.ModuleMutex(this_name):
332
+ gen.finish_writer(outputName, fileUse, worked)
330
333
  importlib.invalidate_caches()
331
334
  if bToGenDir:
332
335
  progress.SetDescription("Importing module")
@@ -371,7 +374,8 @@ def GenerateChildFromTypeLibSpec(
371
374
  gen.generate_child(child, dir_path_name)
372
375
  progress.SetDescription("Importing module")
373
376
  importlib.invalidate_caches()
374
- __import__("win32com.gen_py." + dir_name + "." + child)
377
+ with gencache.ModuleMutex(dir_name):
378
+ __import__("win32com.gen_py." + dir_name + "." + child)
375
379
  progress.Close()
376
380
 
377
381
 
@@ -1,5 +1,4 @@
1
- """Utilities for selecting and enumerating the Type Libraries installed on the system
2
- """
1
+ """Utilities for selecting and enumerating the Type Libraries installed on the system"""
3
2
 
4
3
  import pythoncom
5
4
  import win32api
@@ -114,8 +113,8 @@ def EnumTlbs(excludeFlags=0):
114
113
  # The Resolve() method on the TypelibSpec does this.
115
114
  # For this reason, keep the version numbers as strings - that
116
115
  # way we can't be wrong! Let code that really needs an int to work
117
- # out what to do. FWIW, http://support.microsoft.com/kb/816970 is
118
- # pretty clear that they *should* be hex.
116
+ # out what to do. FWIW, https://www.betaarchive.com/wiki/index.php?title=Microsoft_KB_Archive/816970
117
+ # is pretty clear that they *should* be hex.
119
118
  major = major_minor[0]
120
119
  minor = major_minor[1]
121
120
  key3 = win32api.RegOpenKey(key2, str(version))
@@ -5,7 +5,7 @@ programmers, or other COM modules.
5
5
  """
6
6
 
7
7
  import pythoncom
8
- from win32com.client import Dispatch, _get_good_object_
8
+ from win32com.client import _get_good_object_
9
9
 
10
10
  PyIDispatchType = pythoncom.TypeIIDs[pythoncom.IID_IDispatch]
11
11
 
@@ -11,7 +11,7 @@ for f in formats:
11
11
  val = getattr(win32con, f)
12
12
  format_name_map[val] = f
13
13
 
14
- tymeds = [attr for attr in pythoncom.__dict__.keys() if attr.startswith("TYMED_")]
14
+ tymeds = [attr for attr in pythoncom.__dict__ if attr.startswith("TYMED_")]
15
15
 
16
16
 
17
17
  def DumpClipboard():
@@ -50,7 +50,7 @@ import sys
50
50
 
51
51
  import pythoncom
52
52
  from win32com import universal
53
- from win32com.client import Dispatch, DispatchWithEvents, constants, gencache
53
+ from win32com.client import DispatchWithEvents, constants, gencache
54
54
 
55
55
  # Support for COM objects we use.
56
56
  gencache.EnsureModule(
@@ -3,7 +3,7 @@
3
3
  This module is a functional example of how to implement the IRTDServer interface
4
4
  in python, using the pywin32 extensions. Further details, about this interface
5
5
  and it can be found at:
6
- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexcl2k2/html/odc_xlrtdfaq.asp
6
+ https://learn.microsoft.com/en-us/previous-versions/office/developer/office-xp/aa140060(v=office.10)
7
7
  """
8
8
 
9
9
  # Copyright (c) 2003-2004 by Chris Nilsson <chris@slort.org>
@@ -30,8 +30,6 @@ import pythoncom
30
30
  import win32api
31
31
  import win32com
32
32
  import win32com.server.register
33
- from win32com import universal
34
- from win32com.client import Dispatch, DispatchWithEvents, constants, gencache, getevents
35
33
 
36
34
  # This demo uses 'print' - use win32traceutil to see it if we have no
37
35
  # console.
@@ -40,7 +38,6 @@ try:
40
38
  except win32api.error:
41
39
  import win32traceutil
42
40
 
43
- import array
44
41
 
45
42
  from win32com.axcontrol import axcontrol
46
43
 
@@ -219,7 +219,7 @@ class IEToolbar:
219
219
 
220
220
  def on_first_button(self):
221
221
  print("first!")
222
- self.webbrowser.Navigate2("http://starship.python.net/crew/mhammond/")
222
+ self.webbrowser.Navigate2("https://github.com/mhammond/pywin32")
223
223
 
224
224
  def on_second_button(self):
225
225
  print("second!")
@@ -58,9 +58,7 @@ class FolderEvent:
58
58
  try:
59
59
  print("An item was added to the inbox with subject:", item.Subject)
60
60
  except AttributeError:
61
- print(
62
- "An item was added to the inbox, but it has no subject! - ", repr(item)
63
- )
61
+ print(f"An item was added to the inbox, but it has no subject! - {item!r}")
64
62
 
65
63
 
66
64
  class OutlookAddin:
@@ -1,48 +1,48 @@
1
1
  """Utility functions for writing out gateway C++ files
2
2
 
3
- This module will generate a C++/Python binding for a specific COM
4
- interface.
5
-
6
- Can be run from command line (passing required arguments) or the old way
7
- (start Python, import this module, change to the directory where the generated code
8
- should be written, and run the public function).
9
-
10
- This module is capable of generating both 'Interfaces' (ie, Python
11
- client side support for the interface) and 'Gateways' (ie, Python
12
- server side support for the interface). Many COM interfaces are useful
13
- both as Client and Server. Other interfaces, however, really only make
14
- sense to implement one side or the other. For example, it would be pointless
15
- for Python to implement Server side for 'IRunningObjectTable', unless we were
16
- implementing core COM for an operating system in Python (hey - now there's an idea!)
17
-
18
- Most COM interface code is totally boiler-plate - it consists of
19
- converting arguments, dispatching the call to Python, and processing
20
- any result values.
21
-
22
- This module automates the generation of such code. It has the ability to
23
- parse a .H file generated by the MIDL tool (ie, almost all COM .h files)
24
- and build almost totally complete C++ code.
25
-
26
- The module understands some of the well known data types, and how to
27
- convert them. There are only a couple of places where hand-editing is
28
- necessary, as detailed below:
29
-
30
- unsupported types -- If a type is not known, the generator will
31
- pretty much ignore it, but write a comment to the generated code. You
32
- may want to add custom support for this type. In some cases, C++ compile errors
33
- will result. These are intentional - generating code to remove these errors would
34
- imply a false sense of security that the generator has done the right thing.
35
-
36
- other return policies -- By default, Python never sees the return SCODE from
37
- a COM function. The interface usually returns None if OK, else a COM exception
38
- if "FAILED(scode)" is TRUE. You may need to change this if:
39
- * EXCEPINFO is passed to the COM function. This is not detected and handled
40
- * For some reason Python should always see the result SCODE, even if it
41
- did fail or succeed. For example, some functions return a BOOLEAN result
42
- in the SCODE, meaning Python should always see it.
43
- * FAILED(scode) for the interface still has valid data to return (by default,
44
- the code generated does not process the return values, and raise an exception
45
- to Python/COM
3
+ This module will generate a C++/Python binding for a specific COM
4
+ interface.
5
+
6
+ Can be run from command line (passing required arguments) or the old way
7
+ (start Python, import this module, change to the directory where the generated code
8
+ should be written, and run the public function).
9
+
10
+ This module is capable of generating both 'Interfaces' (ie, Python
11
+ client side support for the interface) and 'Gateways' (ie, Python
12
+ server side support for the interface). Many COM interfaces are useful
13
+ both as Client and Server. Other interfaces, however, really only make
14
+ sense to implement one side or the other. For example, it would be pointless
15
+ for Python to implement Server side for 'IRunningObjectTable', unless we were
16
+ implementing core COM for an operating system in Python (hey - now there's an idea!)
17
+
18
+ Most COM interface code is totally boiler-plate - it consists of
19
+ converting arguments, dispatching the call to Python, and processing
20
+ any result values.
21
+
22
+ This module automates the generation of such code. It has the ability to
23
+ parse a .h file generated by the MIDL tool (ie, almost all COM .h files)
24
+ and build almost totally complete C++ code.
25
+
26
+ The module understands some of the well known data types, and how to
27
+ convert them. There are only a couple of places where hand-editing is
28
+ necessary, as detailed below:
29
+
30
+ unsupported types -- If a type is not known, the generator will
31
+ pretty much ignore it, but write a comment to the generated code. You
32
+ may want to add custom support for this type. In some cases, C++ compile errors
33
+ will result. These are intentional - generating code to remove these errors would
34
+ imply a false sense of security that the generator has done the right thing.
35
+
36
+ other return policies -- By default, Python never sees the return SCODE from
37
+ a COM function. The interface usually returns None if OK, else a COM exception
38
+ if "FAILED(scode)" is TRUE. You may need to change this if:
39
+ * EXCEPINFO is passed to the COM function. This is not detected and handled
40
+ * For some reason Python should always see the result SCODE, even if it
41
+ did fail or succeed. For example, some functions return a BOOLEAN result
42
+ in the SCODE, meaning Python should always see it.
43
+ * FAILED(scode) for the interface still has valid data to return (by default,
44
+ the code generated does not process the return values, and raise an exception
45
+ to Python/COM
46
46
  """
47
47
 
48
48
  import argparse
@@ -61,7 +61,7 @@ def make_framework_support(
61
61
  ):
62
62
  """Generate C++ code for a Python Interface and Gateway
63
63
 
64
- header_file_name -- The full path to the .H file which defines the interface.
64
+ header_file_name -- The full path to the .h file which defines the interface.
65
65
  interface_name -- The name of the interface to search for, and to generate.
66
66
  bMakeInterface = 1 -- Should interface (ie, client) support be generated.
67
67
  bMakeGatewayInterface = 1 -- Should gateway (ie, server) support be generated.
@@ -202,9 +202,7 @@ Py{name}::~Py{name}()
202
202
  return ({name} *)Py{base}::GetI(self);
203
203
  }}
204
204
 
205
- """.format(
206
- **interface.__dict__
207
- )
205
+ """.format(**interface.__dict__)
208
206
  )
209
207
 
210
208
  ptr = re.sub(r"[a-z]", "", interface.name)
@@ -219,9 +217,7 @@ PyObject *Py{interfacename}::{method}(PyObject *self, PyObject *args)
219
217
  {interfacename} *p{ptr} = GetI(self);
220
218
  if ( p{ptr} == NULL )
221
219
  return NULL;
222
- """.format(
223
- **strdict
224
- )
220
+ """.format(**strdict)
225
221
  )
226
222
  argsParseTuple = argsCOM = formatChars = codePost = codePobjects = (
227
223
  codeCobjects
@@ -294,9 +290,7 @@ PyObject *Py{interfacename}::{method}(PyObject *self, PyObject *args)
294
290
  {cleanup_gil}
295
291
  if ( FAILED(hr) )
296
292
  return PyCom_BuildPyException(hr, p{ptr}, IID_{interfacename} );
297
- """.format(
298
- **strdict
299
- )
293
+ """.format(**strdict)
300
294
  )
301
295
  codePre = codePost = formatChars = codeVarsPass = codeDecl = ""
302
296
  for arg in method.args:
@@ -348,9 +342,7 @@ PyComTypeObject Py{name}::type("Py{name}",
348
342
  sizeof(Py{name}),
349
343
  Py{name}_methods,
350
344
  GET_PYCOM_CTOR(Py{name}));
351
- """.format(
352
- **locals()
353
- )
345
+ """.format(**locals())
354
346
  )
355
347
 
356
348