py2docfx 0.1.9.dev1886355__py3-none-any.whl → 0.1.9.dev1897607__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 (2380) hide show
  1. py2docfx/__main__.py +15 -90
  2. py2docfx/convert_prepare/constants.py +3 -0
  3. py2docfx/convert_prepare/environment.py +1 -1
  4. py2docfx/convert_prepare/generate_document.py +2 -15
  5. py2docfx/convert_prepare/get_source.py +5 -23
  6. py2docfx/convert_prepare/git.py +0 -1
  7. py2docfx/convert_prepare/pack.py +0 -1
  8. py2docfx/convert_prepare/sphinx_caller.py +23 -39
  9. py2docfx/convert_prepare/tests/test_environment.py +53 -0
  10. py2docfx/convert_prepare/tests/test_generate_document.py +2 -0
  11. py2docfx/convert_prepare/tests/test_sphinx_caller.py +2 -0
  12. py2docfx/venv/basevenv/Lib/site-packages/setuptools/build_meta.py +32 -8
  13. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +21 -3
  14. py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/egg_info.py +5 -1
  15. py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +69 -28
  16. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +25 -0
  17. py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist.py +4 -4
  18. py2docfx/venv/venv1/Lib/site-packages/adodbapi/__init__.py +81 -0
  19. py2docfx/venv/venv1/Lib/site-packages/adodbapi/ado_consts.py +281 -0
  20. py2docfx/venv/venv1/Lib/site-packages/adodbapi/adodbapi.py +1157 -0
  21. py2docfx/venv/venv1/Lib/site-packages/adodbapi/apibase.py +724 -0
  22. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_print.py +72 -0
  23. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_table_names.py +21 -0
  24. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_read.py +41 -0
  25. py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_write.py +41 -0
  26. py2docfx/venv/venv1/Lib/site-packages/adodbapi/is64bit.py +34 -0
  27. py2docfx/venv/venv1/Lib/site-packages/adodbapi/process_connect_string.py +137 -0
  28. py2docfx/venv/venv1/Lib/site-packages/adodbapi/schema_table.py +16 -0
  29. py2docfx/venv/venv1/Lib/site-packages/adodbapi/setup.py +68 -0
  30. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitest.py +1599 -0
  31. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitestconfig.py +184 -0
  32. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/dbapi20.py +885 -0
  33. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/is64bit.py +34 -0
  34. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/setuptestframework.py +97 -0
  35. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/test_adodbapi_dbapi20.py +195 -0
  36. py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/tryconnection.py +30 -0
  37. py2docfx/venv/venv1/Lib/site-packages/azure/core/__init__.py +43 -0
  38. py2docfx/venv/venv1/Lib/site-packages/azure/core/_azure_clouds.py +41 -0
  39. py2docfx/venv/venv1/Lib/site-packages/azure/core/_enum_meta.py +66 -0
  40. py2docfx/venv/venv1/Lib/site-packages/azure/core/_match_conditions.py +46 -0
  41. py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client.py +201 -0
  42. py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client_async.py +289 -0
  43. py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +12 -0
  44. py2docfx/venv/venv1/Lib/site-packages/azure/core/async_paging.py +151 -0
  45. py2docfx/venv/venv1/Lib/site-packages/azure/core/configuration.py +148 -0
  46. py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials.py +250 -0
  47. py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials_async.py +84 -0
  48. py2docfx/venv/venv1/Lib/site-packages/azure/core/exceptions.py +579 -0
  49. py2docfx/venv/venv1/Lib/site-packages/azure/core/messaging.py +229 -0
  50. py2docfx/venv/venv1/Lib/site-packages/azure/core/paging.py +125 -0
  51. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/__init__.py +189 -0
  52. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base.py +229 -0
  53. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base_async.py +219 -0
  54. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools.py +84 -0
  55. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools_async.py +73 -0
  56. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/__init__.py +76 -0
  57. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication.py +270 -0
  58. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication_async.py +188 -0
  59. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_base.py +140 -0
  60. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_base_async.py +57 -0
  61. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_custom_hook.py +79 -0
  62. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_distributed_tracing.py +147 -0
  63. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect.py +211 -0
  64. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect_async.py +87 -0
  65. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry.py +563 -0
  66. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry_async.py +215 -0
  67. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_sensitive_header_cleanup_policy.py +77 -0
  68. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_universal.py +750 -0
  69. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_utils.py +104 -0
  70. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/__init__.py +120 -0
  71. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +564 -0
  72. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base.py +863 -0
  73. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_async.py +169 -0
  74. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_requests_async.py +55 -0
  75. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_bigger_block_size_http_adapters.py +48 -0
  76. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_asyncio.py +297 -0
  77. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_basic.py +413 -0
  78. py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_trio.py +303 -0
  79. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/__init__.py +42 -0
  80. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_async_poller.py +208 -0
  81. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_poller.py +303 -0
  82. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/async_base_polling.py +180 -0
  83. py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/base_polling.py +857 -0
  84. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/__init__.py +36 -0
  85. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_aiohttp.py +228 -0
  86. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_helpers.py +421 -0
  87. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl.py +475 -0
  88. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl_async.py +155 -0
  89. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_asyncio.py +47 -0
  90. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_basic.py +102 -0
  91. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_trio.py +42 -0
  92. py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_rest_py3.py +418 -0
  93. py2docfx/venv/venv1/Lib/site-packages/azure/core/serialization.py +125 -0
  94. py2docfx/venv/venv1/Lib/site-packages/azure/core/settings.py +520 -0
  95. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/__init__.py +12 -0
  96. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_abstract_span.py +311 -0
  97. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/common.py +108 -0
  98. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator.py +109 -0
  99. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator_async.py +109 -0
  100. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/__init__.py +303 -0
  101. py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/_version.py +6 -0
  102. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/__init__.py +35 -0
  103. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_connection_string_parser.py +44 -0
  104. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_messaging_shared.py +46 -0
  105. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared.py +420 -0
  106. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared_async.py +62 -0
  107. py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_utils.py +188 -0
  108. py2docfx/venv/venv1/Lib/site-packages/azure/identity/__init__.py +66 -0
  109. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_auth_record.py +114 -0
  110. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_bearer_token_provider.py +46 -0
  111. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_constants.py +67 -0
  112. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/__init__.py +47 -0
  113. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/app_service.py +39 -0
  114. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/application.py +119 -0
  115. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/authorization_code.py +141 -0
  116. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azd_cli.py +284 -0
  117. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_arc.py +123 -0
  118. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_cli.py +258 -0
  119. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_ml.py +80 -0
  120. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_pipelines.py +176 -0
  121. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_powershell.py +265 -0
  122. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/browser.py +157 -0
  123. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/certificate.py +182 -0
  124. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/chained.py +219 -0
  125. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/client_assertion.py +77 -0
  126. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/client_secret.py +53 -0
  127. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/cloud_shell.py +47 -0
  128. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/default.py +257 -0
  129. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/device_code.py +118 -0
  130. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/environment.py +183 -0
  131. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/imds.py +129 -0
  132. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/managed_identity.py +185 -0
  133. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/on_behalf_of.py +168 -0
  134. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/service_fabric.py +39 -0
  135. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/shared_cache.py +202 -0
  136. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/silent.py +224 -0
  137. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/user_password.py +79 -0
  138. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/vscode.py +216 -0
  139. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/workload_identity.py +97 -0
  140. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_enums.py +67 -0
  141. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_exceptions.py +50 -0
  142. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/__init__.py +56 -0
  143. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aad_client.py +77 -0
  144. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aad_client_base.py +420 -0
  145. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aadclient_certificate.py +46 -0
  146. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/auth_code_redirect_handler.py +62 -0
  147. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/client_credential_base.py +57 -0
  148. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/decorators.py +74 -0
  149. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/get_token_mixin.py +165 -0
  150. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/interactive.py +302 -0
  151. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/linux_vscode_adapter.py +100 -0
  152. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/macos_vscode_adapter.py +34 -0
  153. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/managed_identity_base.py +61 -0
  154. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/managed_identity_client.py +151 -0
  155. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/msal_client.py +145 -0
  156. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/msal_credentials.py +147 -0
  157. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/msal_managed_identity_client.py +210 -0
  158. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/pipeline.py +94 -0
  159. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/shared_token_cache.py +291 -0
  160. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/user_agent.py +9 -0
  161. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/utils.py +120 -0
  162. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/win_vscode_adapter.py +77 -0
  163. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_persistent_cache.py +116 -0
  164. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_version.py +5 -0
  165. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/__init__.py +46 -0
  166. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_bearer_token_provider.py +47 -0
  167. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/__init__.py +40 -0
  168. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/app_service.py +20 -0
  169. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/application.py +121 -0
  170. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/authorization_code.py +147 -0
  171. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azd_cli.py +232 -0
  172. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_arc.py +45 -0
  173. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_cli.py +209 -0
  174. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_ml.py +20 -0
  175. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_pipelines.py +146 -0
  176. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_powershell.py +186 -0
  177. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/certificate.py +77 -0
  178. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/chained.py +192 -0
  179. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/client_assertion.py +75 -0
  180. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/client_secret.py +67 -0
  181. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/cloud_shell.py +29 -0
  182. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/default.py +242 -0
  183. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/environment.py +153 -0
  184. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/imds.py +85 -0
  185. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/managed_identity.py +170 -0
  186. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/on_behalf_of.py +135 -0
  187. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/service_fabric.py +20 -0
  188. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/shared_cache.py +154 -0
  189. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/vscode.py +127 -0
  190. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/workload_identity.py +77 -0
  191. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/__init__.py +32 -0
  192. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/aad_client.py +97 -0
  193. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/decorators.py +74 -0
  194. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/get_token_mixin.py +165 -0
  195. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/managed_identity_base.py +68 -0
  196. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/managed_identity_client.py +39 -0
  197. py2docfx/venv/venv1/Lib/site-packages/cachetools/__init__.py +859 -0
  198. py2docfx/venv/venv1/Lib/site-packages/cachetools/func.py +121 -0
  199. py2docfx/venv/venv1/Lib/site-packages/cachetools/keys.py +62 -0
  200. py2docfx/venv/venv1/Lib/site-packages/certifi/__init__.py +4 -0
  201. py2docfx/venv/venv1/Lib/site-packages/certifi/__main__.py +12 -0
  202. py2docfx/venv/venv1/Lib/site-packages/certifi/core.py +114 -0
  203. py2docfx/venv/venv1/Lib/site-packages/cffi/__init__.py +14 -0
  204. py2docfx/venv/venv1/Lib/site-packages/cffi/_imp_emulation.py +83 -0
  205. py2docfx/venv/venv1/Lib/site-packages/cffi/_shimmed_dist_utils.py +45 -0
  206. py2docfx/venv/venv1/Lib/site-packages/cffi/api.py +967 -0
  207. py2docfx/venv/venv1/Lib/site-packages/cffi/backend_ctypes.py +1121 -0
  208. py2docfx/venv/venv1/Lib/site-packages/cffi/cffi_opcode.py +187 -0
  209. py2docfx/venv/venv1/Lib/site-packages/cffi/commontypes.py +82 -0
  210. py2docfx/venv/venv1/Lib/site-packages/cffi/cparser.py +1015 -0
  211. py2docfx/venv/venv1/Lib/site-packages/cffi/error.py +31 -0
  212. py2docfx/venv/venv1/Lib/site-packages/cffi/ffiplatform.py +113 -0
  213. py2docfx/venv/venv1/Lib/site-packages/cffi/lock.py +30 -0
  214. py2docfx/venv/venv1/Lib/site-packages/cffi/model.py +618 -0
  215. py2docfx/venv/venv1/Lib/site-packages/cffi/pkgconfig.py +121 -0
  216. py2docfx/venv/venv1/Lib/site-packages/cffi/recompiler.py +1598 -0
  217. py2docfx/venv/venv1/Lib/site-packages/cffi/setuptools_ext.py +216 -0
  218. py2docfx/venv/venv1/Lib/site-packages/cffi/vengine_cpy.py +1084 -0
  219. py2docfx/venv/venv1/Lib/site-packages/cffi/vengine_gen.py +679 -0
  220. py2docfx/venv/venv1/Lib/site-packages/cffi/verifier.py +306 -0
  221. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/__init__.py +46 -0
  222. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/__main__.py +4 -0
  223. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/api.py +668 -0
  224. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cd.py +395 -0
  225. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cli/__init__.py +6 -0
  226. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cli/__main__.py +320 -0
  227. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/constant.py +1997 -0
  228. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/legacy.py +65 -0
  229. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/md.py +628 -0
  230. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/models.py +359 -0
  231. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/utils.py +421 -0
  232. py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/version.py +6 -0
  233. py2docfx/venv/venv1/Lib/site-packages/cryptography/__about__.py +17 -0
  234. py2docfx/venv/venv1/Lib/site-packages/cryptography/__init__.py +13 -0
  235. py2docfx/venv/venv1/Lib/site-packages/cryptography/exceptions.py +52 -0
  236. py2docfx/venv/venv1/Lib/site-packages/cryptography/fernet.py +215 -0
  237. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/__init__.py +13 -0
  238. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/_oid.py +313 -0
  239. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/__init__.py +13 -0
  240. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/__init__.py +9 -0
  241. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/backend.py +291 -0
  242. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/__init__.py +3 -0
  243. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/__init__.py +3 -0
  244. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py +183 -0
  245. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py +121 -0
  246. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/__init__.py +5 -0
  247. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py +5 -0
  248. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py +107 -0
  249. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/__init__.py +3 -0
  250. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_asymmetric.py +19 -0
  251. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py +58 -0
  252. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_serialization.py +169 -0
  253. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py +3 -0
  254. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py +135 -0
  255. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py +154 -0
  256. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py +403 -0
  257. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py +116 -0
  258. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py +118 -0
  259. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py +113 -0
  260. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py +260 -0
  261. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/types.py +111 -0
  262. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py +24 -0
  263. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py +109 -0
  264. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py +112 -0
  265. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py +27 -0
  266. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/aead.py +23 -0
  267. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py +177 -0
  268. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py +145 -0
  269. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py +268 -0
  270. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/cmac.py +10 -0
  271. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/constant_time.py +14 -0
  272. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/hashes.py +242 -0
  273. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/hmac.py +13 -0
  274. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/__init__.py +23 -0
  275. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py +124 -0
  276. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py +101 -0
  277. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py +302 -0
  278. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py +62 -0
  279. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py +80 -0
  280. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py +61 -0
  281. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/keywrap.py +177 -0
  282. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/padding.py +204 -0
  283. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/poly1305.py +11 -0
  284. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/__init__.py +63 -0
  285. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/base.py +14 -0
  286. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py +156 -0
  287. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py +336 -0
  288. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py +1569 -0
  289. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py +9 -0
  290. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py +92 -0
  291. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py +50 -0
  292. py2docfx/venv/venv1/Lib/site-packages/cryptography/utils.py +127 -0
  293. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/__init__.py +259 -0
  294. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/base.py +1226 -0
  295. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/certificate_transparency.py +97 -0
  296. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/extensions.py +2196 -0
  297. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/general_name.py +281 -0
  298. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/name.py +465 -0
  299. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/ocsp.py +678 -0
  300. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/oid.py +35 -0
  301. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/verification.py +28 -0
  302. py2docfx/venv/venv1/Lib/site-packages/google/api/annotations_pb2.py +46 -0
  303. py2docfx/venv/venv1/Lib/site-packages/google/api/auth_pb2.py +52 -0
  304. py2docfx/venv/venv1/Lib/site-packages/google/api/backend_pb2.py +52 -0
  305. py2docfx/venv/venv1/Lib/site-packages/google/api/billing_pb2.py +44 -0
  306. py2docfx/venv/venv1/Lib/site-packages/google/api/client_pb2.py +93 -0
  307. py2docfx/venv/venv1/Lib/site-packages/google/api/config_change_pb2.py +48 -0
  308. py2docfx/venv/venv1/Lib/site-packages/google/api/consumer_pb2.py +46 -0
  309. py2docfx/venv/venv1/Lib/site-packages/google/api/context_pb2.py +44 -0
  310. py2docfx/venv/venv1/Lib/site-packages/google/api/control_pb2.py +45 -0
  311. py2docfx/venv/venv1/Lib/site-packages/google/api/distribution_pb2.py +60 -0
  312. py2docfx/venv/venv1/Lib/site-packages/google/api/documentation_pb2.py +48 -0
  313. py2docfx/venv/venv1/Lib/site-packages/google/api/endpoint_pb2.py +42 -0
  314. py2docfx/venv/venv1/Lib/site-packages/google/api/error_reason_pb2.py +44 -0
  315. py2docfx/venv/venv1/Lib/site-packages/google/api/field_behavior_pb2.py +49 -0
  316. py2docfx/venv/venv1/Lib/site-packages/google/api/field_info_pb2.py +51 -0
  317. py2docfx/venv/venv1/Lib/site-packages/google/api/http_pb2.py +46 -0
  318. py2docfx/venv/venv1/Lib/site-packages/google/api/httpbody_pb2.py +45 -0
  319. py2docfx/venv/venv1/Lib/site-packages/google/api/label_pb2.py +44 -0
  320. py2docfx/venv/venv1/Lib/site-packages/google/api/launch_stage_pb2.py +44 -0
  321. py2docfx/venv/venv1/Lib/site-packages/google/api/log_pb2.py +45 -0
  322. py2docfx/venv/venv1/Lib/site-packages/google/api/logging_pb2.py +44 -0
  323. py2docfx/venv/venv1/Lib/site-packages/google/api/metric_pb2.py +65 -0
  324. py2docfx/venv/venv1/Lib/site-packages/google/api/monitored_resource_pb2.py +61 -0
  325. py2docfx/venv/venv1/Lib/site-packages/google/api/monitoring_pb2.py +46 -0
  326. py2docfx/venv/venv1/Lib/site-packages/google/api/policy_pb2.py +47 -0
  327. py2docfx/venv/venv1/Lib/site-packages/google/api/quota_pb2.py +54 -0
  328. py2docfx/venv/venv1/Lib/site-packages/google/api/resource_pb2.py +51 -0
  329. py2docfx/venv/venv1/Lib/site-packages/google/api/routing_pb2.py +47 -0
  330. py2docfx/venv/venv1/Lib/site-packages/google/api/service_pb2.py +67 -0
  331. py2docfx/venv/venv1/Lib/site-packages/google/api/source_info_pb2.py +47 -0
  332. py2docfx/venv/venv1/Lib/site-packages/google/api/system_parameter_pb2.py +48 -0
  333. py2docfx/venv/venv1/Lib/site-packages/google/api/usage_pb2.py +44 -0
  334. py2docfx/venv/venv1/Lib/site-packages/google/api/visibility_pb2.py +49 -0
  335. py2docfx/venv/venv1/Lib/site-packages/google/api_core/__init__.py +22 -0
  336. py2docfx/venv/venv1/Lib/site-packages/google/api_core/_rest_streaming_base.py +118 -0
  337. py2docfx/venv/venv1/Lib/site-packages/google/api_core/bidi.py +743 -0
  338. py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_info.py +108 -0
  339. py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_options.py +137 -0
  340. py2docfx/venv/venv1/Lib/site-packages/google/api_core/datetime_helpers.py +298 -0
  341. py2docfx/venv/venv1/Lib/site-packages/google/api_core/exceptions.py +670 -0
  342. py2docfx/venv/venv1/Lib/site-packages/google/api_core/extended_operation.py +225 -0
  343. py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/__init__.py +19 -0
  344. py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/_helpers.py +39 -0
  345. py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/async_future.py +162 -0
  346. py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/base.py +64 -0
  347. py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/polling.py +323 -0
  348. py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/__init__.py +29 -0
  349. py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/client_info.py +57 -0
  350. py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/config.py +175 -0
  351. py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/config_async.py +42 -0
  352. py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/method.py +253 -0
  353. py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/method_async.py +59 -0
  354. py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/routing_header.py +87 -0
  355. py2docfx/venv/venv1/Lib/site-packages/google/api_core/general_helpers.py +16 -0
  356. py2docfx/venv/venv1/Lib/site-packages/google/api_core/grpc_helpers.py +622 -0
  357. py2docfx/venv/venv1/Lib/site-packages/google/api_core/grpc_helpers_async.py +331 -0
  358. py2docfx/venv/venv1/Lib/site-packages/google/api_core/iam.py +427 -0
  359. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operation.py +365 -0
  360. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operation_async.py +225 -0
  361. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/__init__.py +40 -0
  362. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/abstract_operations_base_client.py +370 -0
  363. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/abstract_operations_client.py +387 -0
  364. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/operations_async_client.py +364 -0
  365. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/operations_client.py +378 -0
  366. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/operations_client_config.py +60 -0
  367. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/operations_rest_client_async.py +345 -0
  368. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/pagers.py +67 -0
  369. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/pagers_async.py +71 -0
  370. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/pagers_base.py +73 -0
  371. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/transports/__init__.py +39 -0
  372. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/transports/base.py +282 -0
  373. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/transports/rest.py +473 -0
  374. py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/transports/rest_asyncio.py +560 -0
  375. py2docfx/venv/venv1/Lib/site-packages/google/api_core/page_iterator.py +571 -0
  376. py2docfx/venv/venv1/Lib/site-packages/google/api_core/page_iterator_async.py +285 -0
  377. py2docfx/venv/venv1/Lib/site-packages/google/api_core/path_template.py +346 -0
  378. py2docfx/venv/venv1/Lib/site-packages/google/api_core/protobuf_helpers.py +373 -0
  379. py2docfx/venv/venv1/Lib/site-packages/google/api_core/rest_helpers.py +109 -0
  380. py2docfx/venv/venv1/Lib/site-packages/google/api_core/rest_streaming.py +66 -0
  381. py2docfx/venv/venv1/Lib/site-packages/google/api_core/rest_streaming_async.py +89 -0
  382. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/__init__.py +52 -0
  383. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_base.py +361 -0
  384. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming.py +263 -0
  385. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming_async.py +325 -0
  386. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary.py +301 -0
  387. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary_async.py +238 -0
  388. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry_async.py +34 -0
  389. py2docfx/venv/venv1/Lib/site-packages/google/api_core/timeout.py +284 -0
  390. py2docfx/venv/venv1/Lib/site-packages/google/api_core/universe.py +82 -0
  391. py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +15 -0
  392. py2docfx/venv/venv1/Lib/site-packages/google/api_core/version_header.py +29 -0
  393. py2docfx/venv/venv1/Lib/site-packages/google/auth/__init__.py +53 -0
  394. py2docfx/venv/venv1/Lib/site-packages/google/auth/_cloud_sdk.py +153 -0
  395. py2docfx/venv/venv1/Lib/site-packages/google/auth/_credentials_async.py +171 -0
  396. py2docfx/venv/venv1/Lib/site-packages/google/auth/_credentials_base.py +75 -0
  397. py2docfx/venv/venv1/Lib/site-packages/google/auth/_default.py +693 -0
  398. py2docfx/venv/venv1/Lib/site-packages/google/auth/_default_async.py +282 -0
  399. py2docfx/venv/venv1/Lib/site-packages/google/auth/_exponential_backoff.py +164 -0
  400. py2docfx/venv/venv1/Lib/site-packages/google/auth/_helpers.py +273 -0
  401. py2docfx/venv/venv1/Lib/site-packages/google/auth/_jwt_async.py +164 -0
  402. py2docfx/venv/venv1/Lib/site-packages/google/auth/_oauth2client.py +167 -0
  403. py2docfx/venv/venv1/Lib/site-packages/google/auth/_refresh_worker.py +109 -0
  404. py2docfx/venv/venv1/Lib/site-packages/google/auth/_service_account_info.py +80 -0
  405. py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/__init__.py +25 -0
  406. py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/credentials.py +143 -0
  407. py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/transport/__init__.py +144 -0
  408. py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/transport/aiohttp.py +184 -0
  409. py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/transport/sessions.py +268 -0
  410. py2docfx/venv/venv1/Lib/site-packages/google/auth/api_key.py +76 -0
  411. py2docfx/venv/venv1/Lib/site-packages/google/auth/app_engine.py +180 -0
  412. py2docfx/venv/venv1/Lib/site-packages/google/auth/aws.py +861 -0
  413. py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/__init__.py +22 -0
  414. py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/_metadata.py +367 -0
  415. py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/credentials.py +496 -0
  416. py2docfx/venv/venv1/Lib/site-packages/google/auth/credentials.py +522 -0
  417. py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/__init__.py +98 -0
  418. py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/_cryptography_rsa.py +151 -0
  419. py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/_python_rsa.py +175 -0
  420. py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/base.py +127 -0
  421. py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/es256.py +175 -0
  422. py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/rsa.py +30 -0
  423. py2docfx/venv/venv1/Lib/site-packages/google/auth/downscoped.py +512 -0
  424. py2docfx/venv/venv1/Lib/site-packages/google/auth/environment_vars.py +84 -0
  425. py2docfx/venv/venv1/Lib/site-packages/google/auth/exceptions.py +108 -0
  426. py2docfx/venv/venv1/Lib/site-packages/google/auth/external_account.py +628 -0
  427. py2docfx/venv/venv1/Lib/site-packages/google/auth/external_account_authorized_user.py +380 -0
  428. py2docfx/venv/venv1/Lib/site-packages/google/auth/iam.py +114 -0
  429. py2docfx/venv/venv1/Lib/site-packages/google/auth/identity_pool.py +439 -0
  430. py2docfx/venv/venv1/Lib/site-packages/google/auth/impersonated_credentials.py +462 -0
  431. py2docfx/venv/venv1/Lib/site-packages/google/auth/jwt.py +878 -0
  432. py2docfx/venv/venv1/Lib/site-packages/google/auth/metrics.py +154 -0
  433. py2docfx/venv/venv1/Lib/site-packages/google/auth/pluggable.py +429 -0
  434. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/__init__.py +103 -0
  435. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_aiohttp_requests.py +391 -0
  436. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_custom_tls_signer.py +283 -0
  437. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_http_client.py +113 -0
  438. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_mtls_helper.py +407 -0
  439. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_requests_base.py +52 -0
  440. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/grpc.py +343 -0
  441. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/mtls.py +112 -0
  442. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/requests.py +600 -0
  443. py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/urllib3.py +444 -0
  444. py2docfx/venv/venv1/Lib/site-packages/google/auth/version.py +15 -0
  445. py2docfx/venv/venv1/Lib/site-packages/google/cloud/extended_operations_pb2.py +47 -0
  446. py2docfx/venv/venv1/Lib/site-packages/google/cloud/location/locations_pb2.py +71 -0
  447. py2docfx/venv/venv1/Lib/site-packages/google/gapic/metadata/gapic_metadata_pb2.py +62 -0
  448. py2docfx/venv/venv1/Lib/site-packages/google/logging/type/http_request_pb2.py +47 -0
  449. py2docfx/venv/venv1/Lib/site-packages/google/logging/type/log_severity_pb2.py +44 -0
  450. py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_grpc.py +19 -0
  451. py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_grpc_pb2.py +15 -0
  452. py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_pb2.py +42 -0
  453. py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_pb2_grpc.py +341 -0
  454. py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_proto.py +5 -0
  455. py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_proto_pb2.py +95 -0
  456. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/__init__.py +36 -0
  457. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_client.py +500 -0
  458. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_client_async.py +286 -0
  459. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_credentials_async.py +118 -0
  460. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_id_token_async.py +285 -0
  461. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_reauth_async.py +328 -0
  462. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_service_account_async.py +132 -0
  463. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/challenges.py +281 -0
  464. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/credentials.py +614 -0
  465. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/gdch_credentials.py +251 -0
  466. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/id_token.py +340 -0
  467. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/reauth.py +369 -0
  468. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/service_account.py +846 -0
  469. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/sts.py +176 -0
  470. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/utils.py +168 -0
  471. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/webauthn_handler.py +82 -0
  472. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/webauthn_handler_factory.py +16 -0
  473. py2docfx/venv/venv1/Lib/site-packages/google/oauth2/webauthn_types.py +156 -0
  474. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +10 -0
  475. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +37 -0
  476. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +43 -0
  477. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +46 -0
  478. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor.py +1511 -0
  479. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_database.py +154 -0
  480. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +3169 -0
  481. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pool.py +1355 -0
  482. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +37 -0
  483. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +37 -0
  484. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +37 -0
  485. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/__init__.py +7 -0
  486. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/_parameterized.py +420 -0
  487. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/api_implementation.py +142 -0
  488. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/builder.py +117 -0
  489. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/containers.py +677 -0
  490. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/decoder.py +1036 -0
  491. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/encoder.py +806 -0
  492. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/enum_type_wrapper.py +112 -0
  493. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/extension_dict.py +194 -0
  494. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/field_mask.py +310 -0
  495. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/message_listener.py +55 -0
  496. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_edition_defaults.py +5 -0
  497. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_message.py +1580 -0
  498. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/testing_refleaks.py +119 -0
  499. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/type_checkers.py +408 -0
  500. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/well_known_types.py +678 -0
  501. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/wire_format.py +245 -0
  502. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/json_format.py +1069 -0
  503. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message.py +422 -0
  504. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message_factory.py +237 -0
  505. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto.py +116 -0
  506. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto_builder.py +111 -0
  507. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto_json.py +83 -0
  508. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/pyext/cpp_message.py +49 -0
  509. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/reflection.py +85 -0
  510. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +117 -0
  511. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/service.py +213 -0
  512. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/service_reflection.py +272 -0
  513. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +37 -0
  514. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +47 -0
  515. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/symbol_database.py +197 -0
  516. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_encoding.py +106 -0
  517. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_format.py +1864 -0
  518. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +37 -0
  519. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +53 -0
  520. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/unknown_fields.py +97 -0
  521. py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +53 -0
  522. py2docfx/venv/venv1/Lib/site-packages/google/rpc/code_pb2.py +42 -0
  523. py2docfx/venv/venv1/Lib/site-packages/google/rpc/context/attribute_context_pb2.py +82 -0
  524. py2docfx/venv/venv1/Lib/site-packages/google/rpc/context/audit_context_pb2.py +47 -0
  525. py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.py +77 -0
  526. py2docfx/venv/venv1/Lib/site-packages/google/rpc/http_pb2.py +46 -0
  527. py2docfx/venv/venv1/Lib/site-packages/google/rpc/status_pb2.py +45 -0
  528. py2docfx/venv/venv1/Lib/site-packages/google/type/calendar_period_pb2.py +44 -0
  529. py2docfx/venv/venv1/Lib/site-packages/google/type/color_pb2.py +45 -0
  530. py2docfx/venv/venv1/Lib/site-packages/google/type/date_pb2.py +42 -0
  531. py2docfx/venv/venv1/Lib/site-packages/google/type/datetime_pb2.py +49 -0
  532. py2docfx/venv/venv1/Lib/site-packages/google/type/dayofweek_pb2.py +44 -0
  533. py2docfx/venv/venv1/Lib/site-packages/google/type/decimal_pb2.py +42 -0
  534. py2docfx/venv/venv1/Lib/site-packages/google/type/expr_pb2.py +42 -0
  535. py2docfx/venv/venv1/Lib/site-packages/google/type/fraction_pb2.py +44 -0
  536. py2docfx/venv/venv1/Lib/site-packages/google/type/interval_pb2.py +47 -0
  537. py2docfx/venv/venv1/Lib/site-packages/google/type/latlng_pb2.py +42 -0
  538. py2docfx/venv/venv1/Lib/site-packages/google/type/localized_text_pb2.py +44 -0
  539. py2docfx/venv/venv1/Lib/site-packages/google/type/money_pb2.py +42 -0
  540. py2docfx/venv/venv1/Lib/site-packages/google/type/month_pb2.py +42 -0
  541. py2docfx/venv/venv1/Lib/site-packages/google/type/phone_number_pb2.py +46 -0
  542. py2docfx/venv/venv1/Lib/site-packages/google/type/postal_address_pb2.py +44 -0
  543. py2docfx/venv/venv1/Lib/site-packages/google/type/quaternion_pb2.py +44 -0
  544. py2docfx/venv/venv1/Lib/site-packages/google/type/timeofday_pb2.py +44 -0
  545. py2docfx/venv/venv1/Lib/site-packages/idna/__init__.py +45 -0
  546. py2docfx/venv/venv1/Lib/site-packages/idna/codec.py +122 -0
  547. py2docfx/venv/venv1/Lib/site-packages/idna/compat.py +15 -0
  548. py2docfx/venv/venv1/Lib/site-packages/idna/core.py +437 -0
  549. py2docfx/venv/venv1/Lib/site-packages/idna/idnadata.py +4243 -0
  550. py2docfx/venv/venv1/Lib/site-packages/idna/intranges.py +57 -0
  551. py2docfx/venv/venv1/Lib/site-packages/idna/package_data.py +1 -0
  552. py2docfx/venv/venv1/Lib/site-packages/idna/uts46data.py +8681 -0
  553. py2docfx/venv/venv1/Lib/site-packages/isapi/__init__.py +39 -0
  554. py2docfx/venv/venv1/Lib/site-packages/isapi/install.py +812 -0
  555. py2docfx/venv/venv1/Lib/site-packages/isapi/isapicon.py +121 -0
  556. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/advanced.py +218 -0
  557. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector.py +116 -0
  558. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_asynch.py +85 -0
  559. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_with_filter.py +161 -0
  560. py2docfx/venv/venv1/Lib/site-packages/isapi/samples/test.py +195 -0
  561. py2docfx/venv/venv1/Lib/site-packages/isapi/simple.py +72 -0
  562. py2docfx/venv/venv1/Lib/site-packages/isapi/test/extension_simple.py +114 -0
  563. py2docfx/venv/venv1/Lib/site-packages/isapi/threaded_extension.py +190 -0
  564. py2docfx/venv/venv1/Lib/site-packages/jwt/__init__.py +74 -0
  565. py2docfx/venv/venv1/Lib/site-packages/jwt/algorithms.py +860 -0
  566. py2docfx/venv/venv1/Lib/site-packages/jwt/api_jwk.py +144 -0
  567. py2docfx/venv/venv1/Lib/site-packages/jwt/api_jws.py +335 -0
  568. py2docfx/venv/venv1/Lib/site-packages/jwt/api_jwt.py +377 -0
  569. py2docfx/venv/venv1/Lib/site-packages/jwt/exceptions.py +74 -0
  570. py2docfx/venv/venv1/Lib/site-packages/jwt/help.py +64 -0
  571. py2docfx/venv/venv1/Lib/site-packages/jwt/jwk_set_cache.py +31 -0
  572. py2docfx/venv/venv1/Lib/site-packages/jwt/jwks_client.py +124 -0
  573. py2docfx/venv/venv1/Lib/site-packages/jwt/types.py +5 -0
  574. py2docfx/venv/venv1/Lib/site-packages/jwt/utils.py +145 -0
  575. py2docfx/venv/venv1/Lib/site-packages/jwt/warnings.py +2 -0
  576. py2docfx/venv/venv1/Lib/site-packages/msal/__init__.py +48 -0
  577. py2docfx/venv/venv1/Lib/site-packages/msal/__main__.py +343 -0
  578. py2docfx/venv/venv1/Lib/site-packages/msal/application.py +2432 -0
  579. py2docfx/venv/venv1/Lib/site-packages/msal/auth_scheme.py +34 -0
  580. py2docfx/venv/venv1/Lib/site-packages/msal/authority.py +225 -0
  581. py2docfx/venv/venv1/Lib/site-packages/msal/broker.py +265 -0
  582. py2docfx/venv/venv1/Lib/site-packages/msal/cloudshell.py +122 -0
  583. py2docfx/venv/venv1/Lib/site-packages/msal/exceptions.py +38 -0
  584. py2docfx/venv/venv1/Lib/site-packages/msal/individual_cache.py +286 -0
  585. py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +649 -0
  586. py2docfx/venv/venv1/Lib/site-packages/msal/mex.py +137 -0
  587. py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/__init__.py +7 -0
  588. py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/assertion.py +137 -0
  589. py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/authcode.py +379 -0
  590. py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/http.py +74 -0
  591. py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/oauth2.py +865 -0
  592. py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/oidc.py +338 -0
  593. py2docfx/venv/venv1/Lib/site-packages/msal/region.py +45 -0
  594. py2docfx/venv/venv1/Lib/site-packages/msal/telemetry.py +78 -0
  595. py2docfx/venv/venv1/Lib/site-packages/msal/throttled_http_client.py +148 -0
  596. py2docfx/venv/venv1/Lib/site-packages/msal/token_cache.py +418 -0
  597. py2docfx/venv/venv1/Lib/site-packages/msal/wstrust_request.py +129 -0
  598. py2docfx/venv/venv1/Lib/site-packages/msal/wstrust_response.py +94 -0
  599. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/__init__.py +13 -0
  600. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/cache_lock.py +71 -0
  601. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/libsecret.py +134 -0
  602. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/osx.py +252 -0
  603. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/persistence.py +344 -0
  604. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/token_cache.py +88 -0
  605. py2docfx/venv/venv1/Lib/site-packages/msal_extensions/windows.py +123 -0
  606. py2docfx/venv/venv1/Lib/site-packages/opencensus/__init__.py +1 -0
  607. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/__init__.py +1 -0
  608. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/backports/__init__.py +79 -0
  609. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/configuration/__init__.py +46 -0
  610. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/http_handler/__init__.py +43 -0
  611. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/monitored_resource/aws_identity_doc_utils.py +95 -0
  612. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/monitored_resource/gcp_metadata_config.py +115 -0
  613. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/monitored_resource/k8s_utils.py +64 -0
  614. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/monitored_resource/monitored_resource.py +68 -0
  615. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/resource/__init__.py +218 -0
  616. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/runtime_context/__init__.py +177 -0
  617. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/runtime_context/version.py +15 -0
  618. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/schedule/__init__.py +149 -0
  619. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/transports/__init__.py +13 -0
  620. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/transports/async_.py +231 -0
  621. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/transports/base.py +31 -0
  622. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/transports/sync.py +28 -0
  623. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/utils/__init__.py +131 -0
  624. py2docfx/venv/venv1/Lib/site-packages/opencensus/common/version/__init__.py +15 -0
  625. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/__init__.py +1 -0
  626. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/__init__.py +1 -0
  627. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/__init__.py +138 -0
  628. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/exporter.py +93 -0
  629. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/processor.py +63 -0
  630. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/protocol.py +206 -0
  631. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/storage.py +205 -0
  632. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/transport.py +358 -0
  633. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/utils.py +79 -0
  634. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/version.py +15 -0
  635. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/log_exporter/__init__.py +314 -0
  636. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/__init__.py +190 -0
  637. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/__init__.py +62 -0
  638. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/cpu.py +50 -0
  639. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/http_requests.py +176 -0
  640. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/memory.py +42 -0
  641. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/process.py +87 -0
  642. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/__init__.py +1 -0
  643. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/state.py +50 -0
  644. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/statsbeat.py +100 -0
  645. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/statsbeat_metrics.py +480 -0
  646. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/trace_exporter/__init__.py +236 -0
  647. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/threading/__init__.py +13 -0
  648. py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/threading/trace.py +154 -0
  649. py2docfx/venv/venv1/Lib/site-packages/opencensus/log/__init__.py +115 -0
  650. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/cumulative.py +87 -0
  651. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/gauge.py +513 -0
  652. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/metric.py +79 -0
  653. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/metric_descriptor.py +174 -0
  654. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/metric_producer.py +81 -0
  655. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/point.py +47 -0
  656. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/summary.py +144 -0
  657. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/time_series.py +90 -0
  658. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/value.py +307 -0
  659. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/label_key.py +51 -0
  660. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/label_value.py +42 -0
  661. py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/transport.py +145 -0
  662. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/__init__.py +13 -0
  663. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/aggregation.py +144 -0
  664. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/aggregation_data.py +399 -0
  665. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/base_exporter.py +42 -0
  666. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/bucket_boundaries.py +41 -0
  667. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/execution_context.py +32 -0
  668. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/measure.py +60 -0
  669. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/measure_to_view_map.py +163 -0
  670. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/measurement.py +50 -0
  671. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/measurement_map.py +118 -0
  672. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/metric_utils.py +79 -0
  673. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/stats.py +43 -0
  674. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/stats_recorder.py +34 -0
  675. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/view.py +106 -0
  676. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/view_data.py +96 -0
  677. py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/view_manager.py +55 -0
  678. py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/__init__.py +23 -0
  679. py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/propagation/__init__.py +13 -0
  680. py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/propagation/binary_serializer.py +109 -0
  681. py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/tag.py +38 -0
  682. py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/tag_key.py +35 -0
  683. py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/tag_map.py +104 -0
  684. py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/tag_value.py +35 -0
  685. py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/validation.py +42 -0
  686. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/__init__.py +17 -0
  687. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/attributes.py +74 -0
  688. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/attributes_helper.py +43 -0
  689. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/base_exporter.py +43 -0
  690. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/base_span.py +109 -0
  691. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/blank_span.py +165 -0
  692. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/config_integration.py +38 -0
  693. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/exceptions_status.py +25 -0
  694. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/execution_context.py +89 -0
  695. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/file_exporter.py +71 -0
  696. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/integrations.py +52 -0
  697. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/link.py +71 -0
  698. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/logging_exporter.py +85 -0
  699. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/print_exporter.py +51 -0
  700. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/__init__.py +13 -0
  701. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/b3_format.py +117 -0
  702. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/binary_format.py +168 -0
  703. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/google_cloud_format.py +128 -0
  704. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/text_format.py +85 -0
  705. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/trace_context_http_header_format.py +115 -0
  706. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/tracestate_string_format.py +43 -0
  707. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/samplers/__init__.py +94 -0
  708. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/span.py +457 -0
  709. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/span_context.py +168 -0
  710. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/span_data.py +184 -0
  711. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/stack_trace.py +189 -0
  712. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/status.py +84 -0
  713. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/time_event.py +117 -0
  714. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/trace_options.py +78 -0
  715. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracer.py +144 -0
  716. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracers/__init__.py +13 -0
  717. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracers/base.py +82 -0
  718. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracers/context_tracer.py +176 -0
  719. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracers/noop_tracer.py +85 -0
  720. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracestate.py +65 -0
  721. py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/utils.py +128 -0
  722. py2docfx/venv/venv1/Lib/site-packages/portalocker/__about__.py +6 -0
  723. py2docfx/venv/venv1/Lib/site-packages/portalocker/__init__.py +79 -0
  724. py2docfx/venv/venv1/Lib/site-packages/portalocker/__main__.py +122 -0
  725. py2docfx/venv/venv1/Lib/site-packages/portalocker/constants.py +59 -0
  726. py2docfx/venv/venv1/Lib/site-packages/portalocker/exceptions.py +27 -0
  727. py2docfx/venv/venv1/Lib/site-packages/portalocker/portalocker.py +154 -0
  728. py2docfx/venv/venv1/Lib/site-packages/portalocker/redis.py +236 -0
  729. py2docfx/venv/venv1/Lib/site-packages/portalocker/utils.py +569 -0
  730. py2docfx/venv/venv1/Lib/site-packages/proto/__init__.py +72 -0
  731. py2docfx/venv/venv1/Lib/site-packages/proto/_file_info.py +196 -0
  732. py2docfx/venv/venv1/Lib/site-packages/proto/_package_info.py +50 -0
  733. py2docfx/venv/venv1/Lib/site-packages/proto/datetime_helpers.py +225 -0
  734. py2docfx/venv/venv1/Lib/site-packages/proto/enums.py +161 -0
  735. py2docfx/venv/venv1/Lib/site-packages/proto/fields.py +165 -0
  736. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/__init__.py +18 -0
  737. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/__init__.py +24 -0
  738. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/maps.py +82 -0
  739. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/repeated.py +184 -0
  740. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/compat.py +67 -0
  741. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/marshal.py +297 -0
  742. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/__init__.py +13 -0
  743. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/bytes.py +44 -0
  744. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/dates.py +85 -0
  745. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/enums.py +59 -0
  746. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/field_mask.py +36 -0
  747. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/message.py +48 -0
  748. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/stringy_numbers.py +71 -0
  749. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/struct.py +143 -0
  750. py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/wrappers.py +84 -0
  751. py2docfx/venv/venv1/Lib/site-packages/proto/message.py +998 -0
  752. py2docfx/venv/venv1/Lib/site-packages/proto/modules.py +50 -0
  753. py2docfx/venv/venv1/Lib/site-packages/proto/primitives.py +38 -0
  754. py2docfx/venv/venv1/Lib/site-packages/proto/utils.py +58 -0
  755. py2docfx/venv/venv1/Lib/site-packages/proto/version.py +15 -0
  756. py2docfx/venv/venv1/Lib/site-packages/psutil/__init__.py +2486 -0
  757. py2docfx/venv/venv1/Lib/site-packages/psutil/_common.py +994 -0
  758. py2docfx/venv/venv1/Lib/site-packages/psutil/_compat.py +477 -0
  759. py2docfx/venv/venv1/Lib/site-packages/psutil/_psaix.py +579 -0
  760. py2docfx/venv/venv1/Lib/site-packages/psutil/_psbsd.py +985 -0
  761. py2docfx/venv/venv1/Lib/site-packages/psutil/_pslinux.py +2375 -0
  762. py2docfx/venv/venv1/Lib/site-packages/psutil/_psosx.py +552 -0
  763. py2docfx/venv/venv1/Lib/site-packages/psutil/_psposix.py +243 -0
  764. py2docfx/venv/venv1/Lib/site-packages/psutil/_pssunos.py +753 -0
  765. py2docfx/venv/venv1/Lib/site-packages/psutil/_pswindows.py +1174 -0
  766. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/__init__.py +2113 -0
  767. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/__main__.py +12 -0
  768. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_aix.py +115 -0
  769. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_bsd.py +592 -0
  770. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_connections.py +567 -0
  771. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_contracts.py +339 -0
  772. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_linux.py +2348 -0
  773. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_memleaks.py +493 -0
  774. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_misc.py +1058 -0
  775. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_osx.py +192 -0
  776. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_posix.py +496 -0
  777. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_process.py +1746 -0
  778. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_process_all.py +543 -0
  779. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_sunos.py +39 -0
  780. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_system.py +987 -0
  781. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_testutils.py +587 -0
  782. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_unicode.py +369 -0
  783. py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_windows.py +934 -0
  784. py2docfx/venv/venv1/Lib/site-packages/pyasn1/__init__.py +2 -0
  785. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/__init__.py +1 -0
  786. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/ber/__init__.py +1 -0
  787. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/ber/decoder.py +2189 -0
  788. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/ber/encoder.py +954 -0
  789. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/ber/eoo.py +28 -0
  790. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/cer/__init__.py +1 -0
  791. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/cer/decoder.py +149 -0
  792. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/cer/encoder.py +331 -0
  793. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/der/__init__.py +1 -0
  794. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/der/decoder.py +120 -0
  795. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/der/encoder.py +126 -0
  796. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/native/__init__.py +1 -0
  797. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/native/decoder.py +244 -0
  798. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/native/encoder.py +285 -0
  799. py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/streaming.py +234 -0
  800. py2docfx/venv/venv1/Lib/site-packages/pyasn1/compat/__init__.py +4 -0
  801. py2docfx/venv/venv1/Lib/site-packages/pyasn1/compat/integer.py +13 -0
  802. py2docfx/venv/venv1/Lib/site-packages/pyasn1/debug.py +146 -0
  803. py2docfx/venv/venv1/Lib/site-packages/pyasn1/error.py +116 -0
  804. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/__init__.py +1 -0
  805. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/base.py +699 -0
  806. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/char.py +288 -0
  807. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/constraint.py +751 -0
  808. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/error.py +11 -0
  809. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/namedtype.py +550 -0
  810. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/namedval.py +192 -0
  811. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/opentype.py +104 -0
  812. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/tag.py +335 -0
  813. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/tagmap.py +96 -0
  814. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/univ.py +3327 -0
  815. py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/useful.py +189 -0
  816. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/__init__.py +2 -0
  817. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/pem.py +58 -0
  818. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc1155.py +96 -0
  819. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc1157.py +126 -0
  820. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc1901.py +22 -0
  821. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc1902.py +129 -0
  822. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc1905.py +135 -0
  823. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2251.py +563 -0
  824. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2314.py +48 -0
  825. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2315.py +294 -0
  826. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2437.py +69 -0
  827. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2459.py +1339 -0
  828. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2511.py +258 -0
  829. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2560.py +225 -0
  830. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2631.py +37 -0
  831. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2634.py +336 -0
  832. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2876.py +56 -0
  833. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2985.py +588 -0
  834. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2986.py +75 -0
  835. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3058.py +42 -0
  836. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3114.py +77 -0
  837. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3125.py +469 -0
  838. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3161.py +142 -0
  839. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3274.py +59 -0
  840. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3279.py +260 -0
  841. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3280.py +1543 -0
  842. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3281.py +331 -0
  843. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3370.py +146 -0
  844. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3412.py +53 -0
  845. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3414.py +28 -0
  846. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3447.py +45 -0
  847. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3537.py +34 -0
  848. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3560.py +74 -0
  849. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3565.py +57 -0
  850. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3657.py +66 -0
  851. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3709.py +207 -0
  852. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3739.py +203 -0
  853. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3770.py +75 -0
  854. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3779.py +137 -0
  855. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3820.py +65 -0
  856. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3852.py +706 -0
  857. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4010.py +58 -0
  858. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4043.py +43 -0
  859. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4055.py +258 -0
  860. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4073.py +59 -0
  861. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4108.py +350 -0
  862. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4210.py +803 -0
  863. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4211.py +396 -0
  864. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4334.py +75 -0
  865. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4357.py +477 -0
  866. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4387.py +23 -0
  867. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4476.py +93 -0
  868. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4490.py +113 -0
  869. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4491.py +44 -0
  870. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4683.py +72 -0
  871. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4985.py +49 -0
  872. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5035.py +199 -0
  873. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5083.py +52 -0
  874. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5084.py +97 -0
  875. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5126.py +577 -0
  876. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5208.py +56 -0
  877. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5275.py +404 -0
  878. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5280.py +1658 -0
  879. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5480.py +190 -0
  880. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5636.py +113 -0
  881. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5639.py +49 -0
  882. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5649.py +33 -0
  883. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5652.py +761 -0
  884. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5697.py +70 -0
  885. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5751.py +124 -0
  886. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5752.py +49 -0
  887. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5753.py +157 -0
  888. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5755.py +398 -0
  889. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5913.py +44 -0
  890. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5914.py +119 -0
  891. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5915.py +32 -0
  892. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5916.py +35 -0
  893. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5917.py +55 -0
  894. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5924.py +19 -0
  895. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5934.py +786 -0
  896. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5940.py +59 -0
  897. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5958.py +98 -0
  898. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5990.py +237 -0
  899. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6010.py +88 -0
  900. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6019.py +45 -0
  901. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6031.py +469 -0
  902. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6032.py +68 -0
  903. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6120.py +43 -0
  904. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6170.py +17 -0
  905. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6187.py +22 -0
  906. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6210.py +42 -0
  907. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6211.py +72 -0
  908. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6402.py +628 -0
  909. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6482.py +74 -0
  910. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6486.py +68 -0
  911. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6487.py +22 -0
  912. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6664.py +147 -0
  913. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6955.py +108 -0
  914. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6960.py +223 -0
  915. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7030.py +66 -0
  916. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7191.py +261 -0
  917. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7229.py +29 -0
  918. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7292.py +357 -0
  919. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7296.py +32 -0
  920. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7508.py +90 -0
  921. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7585.py +50 -0
  922. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7633.py +38 -0
  923. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7773.py +52 -0
  924. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7894.py +92 -0
  925. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7906.py +736 -0
  926. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7914.py +49 -0
  927. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8017.py +153 -0
  928. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8018.py +260 -0
  929. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8103.py +36 -0
  930. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8209.py +20 -0
  931. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8226.py +149 -0
  932. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8358.py +50 -0
  933. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8360.py +44 -0
  934. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8398.py +52 -0
  935. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8410.py +43 -0
  936. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8418.py +36 -0
  937. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8419.py +68 -0
  938. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8479.py +45 -0
  939. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8494.py +80 -0
  940. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8520.py +63 -0
  941. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8619.py +45 -0
  942. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8649.py +40 -0
  943. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8692.py +79 -0
  944. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8696.py +104 -0
  945. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8702.py +105 -0
  946. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8708.py +41 -0
  947. py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8769.py +21 -0
  948. py2docfx/venv/venv1/Lib/site-packages/pycparser/__init__.py +93 -0
  949. py2docfx/venv/venv1/Lib/site-packages/pycparser/_ast_gen.py +336 -0
  950. py2docfx/venv/venv1/Lib/site-packages/pycparser/_build_tables.py +40 -0
  951. py2docfx/venv/venv1/Lib/site-packages/pycparser/ast_transforms.py +164 -0
  952. py2docfx/venv/venv1/Lib/site-packages/pycparser/c_ast.py +1125 -0
  953. py2docfx/venv/venv1/Lib/site-packages/pycparser/c_generator.py +502 -0
  954. py2docfx/venv/venv1/Lib/site-packages/pycparser/c_lexer.py +555 -0
  955. py2docfx/venv/venv1/Lib/site-packages/pycparser/c_parser.py +1950 -0
  956. py2docfx/venv/venv1/Lib/site-packages/pycparser/lextab.py +10 -0
  957. py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/__init__.py +5 -0
  958. py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/cpp.py +905 -0
  959. py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/ctokens.py +133 -0
  960. py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/lex.py +1099 -0
  961. py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/yacc.py +3494 -0
  962. py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/ygen.py +74 -0
  963. py2docfx/venv/venv1/Lib/site-packages/pycparser/plyparser.py +133 -0
  964. py2docfx/venv/venv1/Lib/site-packages/pycparser/yacctab.py +369 -0
  965. py2docfx/venv/venv1/Lib/site-packages/pythoncom.py +4 -0
  966. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/basictimerapp.py +258 -0
  967. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/customprint.py +185 -0
  968. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/demoutils.py +65 -0
  969. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dlgappdemo.py +51 -0
  970. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dojobapp.py +71 -0
  971. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/helloapp.py +53 -0
  972. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/cmdserver.py +116 -0
  973. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/createwin.py +114 -0
  974. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/demoutils.py +65 -0
  975. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dibdemo.py +73 -0
  976. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dlgtest.py +145 -0
  977. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dyndlg.py +104 -0
  978. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/fontdemo.py +85 -0
  979. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/guidemo.py +80 -0
  980. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/hiertest.py +138 -0
  981. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/menutest.py +13 -0
  982. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/objdoc.py +57 -0
  983. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/demoutils.py +65 -0
  984. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/flash.py +95 -0
  985. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/msoffice.py +159 -0
  986. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxserialtest.py +133 -0
  987. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxtest.py +244 -0
  988. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/webbrowser.py +72 -0
  989. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/openGLDemo.py +370 -0
  990. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/progressbar.py +105 -0
  991. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/sliderdemo.py +76 -0
  992. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/splittst.py +79 -0
  993. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/threadedgui.py +189 -0
  994. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/toolbar.py +106 -0
  995. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/__init__.py +3 -0
  996. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/__init__.py +133 -0
  997. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/configui.py +34 -0
  998. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgcon.py +32 -0
  999. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgpyapp.py +48 -0
  1000. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/debugger.py +1098 -0
  1001. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/fail.py +54 -0
  1002. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/ideoptions.py +139 -0
  1003. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/list.py +143 -0
  1004. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/login.py +156 -0
  1005. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/status.py +242 -0
  1006. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/DockingBar.py +677 -0
  1007. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/app.py +414 -0
  1008. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/bitmap.py +168 -0
  1009. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/cmdline.py +54 -0
  1010. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dbgcommands.py +189 -0
  1011. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dlgappcore.py +76 -0
  1012. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/ModuleBrowser.py +235 -0
  1013. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/__init__.py +103 -0
  1014. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color/coloreditor.py +646 -0
  1015. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/configui.py +299 -0
  1016. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/document.py +380 -0
  1017. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/editor.py +511 -0
  1018. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/frame.py +74 -0
  1019. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/template.py +59 -0
  1020. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/vss.py +104 -0
  1021. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/help.py +172 -0
  1022. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/interact.py +995 -0
  1023. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpyapp.py +554 -0
  1024. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpydde.py +60 -0
  1025. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/mdi_pychecker.py +850 -0
  1026. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/scriptutils.py +686 -0
  1027. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/sgrepmdi.py +758 -0
  1028. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/startup.py +70 -0
  1029. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/stdin.py +171 -0
  1030. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/toolmenu.py +281 -0
  1031. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/window.py +14 -0
  1032. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/winout.py +589 -0
  1033. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoExpand.py +95 -0
  1034. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoIndent.py +536 -0
  1035. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/CallTips.py +218 -0
  1036. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/FormatParagraph.py +166 -0
  1037. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/IdleHistory.py +87 -0
  1038. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/PyParse.py +585 -0
  1039. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/__init__.py +1 -0
  1040. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/activex.py +80 -0
  1041. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/afxres.py +501 -0
  1042. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/dialog.py +280 -0
  1043. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/docview.py +151 -0
  1044. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/object.py +66 -0
  1045. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/thread.py +25 -0
  1046. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/window.py +50 -0
  1047. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/IDLEenvironment.py +597 -0
  1048. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/__init__.py +1 -0
  1049. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/bindings.py +178 -0
  1050. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/config.py +365 -0
  1051. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/configui.py +292 -0
  1052. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/control.py +565 -0
  1053. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/document.py +312 -0
  1054. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/find.py +511 -0
  1055. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/formatter.py +704 -0
  1056. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/keycodes.py +190 -0
  1057. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/scintillacon.py +1983 -0
  1058. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/view.py +845 -0
  1059. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/TraceCollector.py +79 -0
  1060. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browseProjects.py +323 -0
  1061. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browser.py +506 -0
  1062. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/hierlist.py +353 -0
  1063. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regedit.py +382 -0
  1064. py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regpy.py +80 -0
  1065. py2docfx/venv/venv1/Lib/site-packages/requests/__init__.py +184 -0
  1066. py2docfx/venv/venv1/Lib/site-packages/requests/__version__.py +14 -0
  1067. py2docfx/venv/venv1/Lib/site-packages/requests/_internal_utils.py +50 -0
  1068. py2docfx/venv/venv1/Lib/site-packages/requests/adapters.py +719 -0
  1069. py2docfx/venv/venv1/Lib/site-packages/requests/api.py +157 -0
  1070. py2docfx/venv/venv1/Lib/site-packages/requests/auth.py +314 -0
  1071. py2docfx/venv/venv1/Lib/site-packages/requests/certs.py +17 -0
  1072. py2docfx/venv/venv1/Lib/site-packages/requests/compat.py +94 -0
  1073. py2docfx/venv/venv1/Lib/site-packages/requests/cookies.py +561 -0
  1074. py2docfx/venv/venv1/Lib/site-packages/requests/exceptions.py +151 -0
  1075. py2docfx/venv/venv1/Lib/site-packages/requests/help.py +134 -0
  1076. py2docfx/venv/venv1/Lib/site-packages/requests/hooks.py +33 -0
  1077. py2docfx/venv/venv1/Lib/site-packages/requests/models.py +1037 -0
  1078. py2docfx/venv/venv1/Lib/site-packages/requests/packages.py +23 -0
  1079. py2docfx/venv/venv1/Lib/site-packages/requests/sessions.py +831 -0
  1080. py2docfx/venv/venv1/Lib/site-packages/requests/status_codes.py +128 -0
  1081. py2docfx/venv/venv1/Lib/site-packages/requests/structures.py +99 -0
  1082. py2docfx/venv/venv1/Lib/site-packages/requests/utils.py +1096 -0
  1083. py2docfx/venv/venv1/Lib/site-packages/rsa/__init__.py +60 -0
  1084. py2docfx/venv/venv1/Lib/site-packages/rsa/asn1.py +52 -0
  1085. py2docfx/venv/venv1/Lib/site-packages/rsa/cli.py +321 -0
  1086. py2docfx/venv/venv1/Lib/site-packages/rsa/common.py +184 -0
  1087. py2docfx/venv/venv1/Lib/site-packages/rsa/core.py +53 -0
  1088. py2docfx/venv/venv1/Lib/site-packages/rsa/key.py +858 -0
  1089. py2docfx/venv/venv1/Lib/site-packages/rsa/parallel.py +96 -0
  1090. py2docfx/venv/venv1/Lib/site-packages/rsa/pem.py +134 -0
  1091. py2docfx/venv/venv1/Lib/site-packages/rsa/pkcs1.py +485 -0
  1092. py2docfx/venv/venv1/Lib/site-packages/rsa/pkcs1_v2.py +100 -0
  1093. py2docfx/venv/venv1/Lib/site-packages/rsa/prime.py +198 -0
  1094. py2docfx/venv/venv1/Lib/site-packages/rsa/randnum.py +95 -0
  1095. py2docfx/venv/venv1/Lib/site-packages/rsa/transform.py +72 -0
  1096. py2docfx/venv/venv1/Lib/site-packages/rsa/util.py +97 -0
  1097. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
  1098. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
  1099. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
  1100. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
  1101. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
  1102. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
  1103. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/inflect/compat/__init__.py +0 -0
  1104. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/vendored/__init__.py +0 -0
  1105. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/__init__.py +0 -0
  1106. py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/zipp/compat/__init__.py +0 -0
  1107. py2docfx/venv/venv1/Lib/site-packages/setuptools/build_meta.py +554 -0
  1108. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +653 -0
  1109. py2docfx/venv/venv1/Lib/site-packages/setuptools/command/egg_info.py +721 -0
  1110. py2docfx/venv/venv1/Lib/site-packages/setuptools/compat/__init__.py +0 -0
  1111. py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +996 -0
  1112. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/compat/__init__.py +0 -0
  1113. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/__init__.py +0 -0
  1114. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/__init__.py +0 -0
  1115. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +646 -0
  1116. py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist.py +280 -0
  1117. py2docfx/venv/venv1/Lib/site-packages/six.py +998 -0
  1118. py2docfx/venv/venv1/Lib/site-packages/typing_extensions.py +3641 -0
  1119. py2docfx/venv/venv1/Lib/site-packages/urllib3/__init__.py +211 -0
  1120. py2docfx/venv/venv1/Lib/site-packages/urllib3/_base_connection.py +172 -0
  1121. py2docfx/venv/venv1/Lib/site-packages/urllib3/_collections.py +483 -0
  1122. py2docfx/venv/venv1/Lib/site-packages/urllib3/_request_methods.py +278 -0
  1123. py2docfx/venv/venv1/Lib/site-packages/urllib3/_version.py +16 -0
  1124. py2docfx/venv/venv1/Lib/site-packages/urllib3/connection.py +1033 -0
  1125. py2docfx/venv/venv1/Lib/site-packages/urllib3/connectionpool.py +1182 -0
  1126. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/__init__.py +0 -0
  1127. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/__init__.py +16 -0
  1128. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/connection.py +254 -0
  1129. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +418 -0
  1130. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/request.py +22 -0
  1131. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/response.py +285 -0
  1132. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/pyopenssl.py +552 -0
  1133. py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/socks.py +228 -0
  1134. py2docfx/venv/venv1/Lib/site-packages/urllib3/exceptions.py +321 -0
  1135. py2docfx/venv/venv1/Lib/site-packages/urllib3/fields.py +341 -0
  1136. py2docfx/venv/venv1/Lib/site-packages/urllib3/filepost.py +89 -0
  1137. py2docfx/venv/venv1/Lib/site-packages/urllib3/http2/__init__.py +53 -0
  1138. py2docfx/venv/venv1/Lib/site-packages/urllib3/http2/connection.py +356 -0
  1139. py2docfx/venv/venv1/Lib/site-packages/urllib3/http2/probe.py +87 -0
  1140. py2docfx/venv/venv1/Lib/site-packages/urllib3/poolmanager.py +637 -0
  1141. py2docfx/venv/venv1/Lib/site-packages/urllib3/response.py +1265 -0
  1142. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/__init__.py +42 -0
  1143. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/connection.py +137 -0
  1144. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/proxy.py +43 -0
  1145. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/request.py +256 -0
  1146. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/response.py +101 -0
  1147. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/retry.py +533 -0
  1148. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_.py +513 -0
  1149. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_match_hostname.py +159 -0
  1150. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssltransport.py +276 -0
  1151. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/timeout.py +275 -0
  1152. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/url.py +471 -0
  1153. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/util.py +42 -0
  1154. py2docfx/venv/venv1/Lib/site-packages/urllib3/util/wait.py +124 -0
  1155. py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/__init__.py +0 -0
  1156. py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/__init__.py +0 -0
  1157. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupRead_BackupWrite.py +119 -0
  1158. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupSeek_streamheaders.py +137 -0
  1159. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CopyFileEx.py +57 -0
  1160. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CreateFileTransacted_MiniVersion.py +122 -0
  1161. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtFormatMessage.py +83 -0
  1162. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_pull.py +28 -0
  1163. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_push.py +25 -0
  1164. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/FileSecurityTest.py +137 -0
  1165. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/GetSaveFileName.py +43 -0
  1166. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/NetValidatePasswordPolicy.py +127 -0
  1167. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/OpenEncryptedFileRaw.py +66 -0
  1168. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegCreateKeyTransacted.py +60 -0
  1169. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegRestoreKey.py +71 -0
  1170. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/SystemParametersInfo.py +210 -0
  1171. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/c_extension/setup.py +26 -0
  1172. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeclient.py +18 -0
  1173. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeserver.py +42 -0
  1174. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/desktopmanager.py +246 -0
  1175. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/eventLogDemo.py +143 -0
  1176. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/getfilever.py +33 -0
  1177. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/mmapfile_demo.py +101 -0
  1178. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/cat.py +17 -0
  1179. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/runproc.py +114 -0
  1180. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/print_desktop.py +113 -0
  1181. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/rastest.py +168 -0
  1182. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/GetTokenInformation.py +110 -0
  1183. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/account_rights.py +51 -0
  1184. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/explicit_entries.py +171 -0
  1185. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/get_policy_info.py +42 -0
  1186. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/list_rights.py +37 -0
  1187. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/localized_names.py +65 -0
  1188. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsaregevent.py +14 -0
  1189. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsastore.py +12 -0
  1190. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/query_information.py +25 -0
  1191. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsave_sa.py +61 -0
  1192. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsecurity.py +36 -0
  1193. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sa_inherit.py +8 -0
  1194. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/security_enums.py +336 -0
  1195. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_audit.py +107 -0
  1196. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_owner.py +74 -0
  1197. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_policy_info.py +28 -0
  1198. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setkernelobjectsecurity.py +135 -0
  1199. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setnamedsecurityinfo.py +131 -0
  1200. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setsecurityinfo.py +132 -0
  1201. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setuserobjectsecurity.py +103 -0
  1202. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/fetch_url.py +158 -0
  1203. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/simple_auth.py +72 -0
  1204. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/socket_server.py +200 -0
  1205. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/validate_password.py +41 -0
  1206. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/nativePipeTestService.py +63 -0
  1207. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestService.py +184 -0
  1208. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestServiceClient.py +155 -0
  1209. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/serviceEvents.py +98 -0
  1210. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/timer_demo.py +72 -0
  1211. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboardDemo.py +143 -0
  1212. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboard_bitmapdemo.py +117 -0
  1213. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32comport_demo.py +144 -0
  1214. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32console_demo.py +135 -0
  1215. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32cred_demo.py +82 -0
  1216. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32fileDemo.py +41 -0
  1217. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_demo.py +177 -0
  1218. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_devicenotify.py +107 -0
  1219. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_dialog.py +445 -0
  1220. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_menu.py +409 -0
  1221. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_taskbar.py +136 -0
  1222. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32netdemo.py +275 -0
  1223. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32rcparser_demo.py +86 -0
  1224. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32servicedemo.py +23 -0
  1225. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32ts_logoff_disconnected.py +25 -0
  1226. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/testwnet.py +123 -0
  1227. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/winnetwk.py +100 -0
  1228. py2docfx/venv/venv1/Lib/site-packages/win32/Demos/winprocess.py +230 -0
  1229. py2docfx/venv/venv1/Lib/site-packages/win32/lib/_win32verstamp_pywin32ctypes.py +164 -0
  1230. py2docfx/venv/venv1/Lib/site-packages/win32/lib/afxres.py +8 -0
  1231. py2docfx/venv/venv1/Lib/site-packages/win32/lib/commctrl.py +1551 -0
  1232. py2docfx/venv/venv1/Lib/site-packages/win32/lib/mmsystem.py +956 -0
  1233. py2docfx/venv/venv1/Lib/site-packages/win32/lib/netbios.py +295 -0
  1234. py2docfx/venv/venv1/Lib/site-packages/win32/lib/ntsecuritycon.py +731 -0
  1235. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_bootstrap.py +29 -0
  1236. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_testutil.py +291 -0
  1237. py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywintypes.py +124 -0
  1238. py2docfx/venv/venv1/Lib/site-packages/win32/lib/rasutil.py +40 -0
  1239. py2docfx/venv/venv1/Lib/site-packages/win32/lib/regcheck.py +161 -0
  1240. py2docfx/venv/venv1/Lib/site-packages/win32/lib/regutil.py +395 -0
  1241. py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspi.py +413 -0
  1242. py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspicon.py +477 -0
  1243. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win2kras.py +7 -0
  1244. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32con.py +5083 -0
  1245. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32cryptcon.py +1925 -0
  1246. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32evtlogutil.py +226 -0
  1247. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32gui_struct.py +957 -0
  1248. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32inetcon.py +1086 -0
  1249. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32netcon.py +627 -0
  1250. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhquery.py +571 -0
  1251. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhutil.py +212 -0
  1252. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32rcparser.py +673 -0
  1253. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32serviceutil.py +1075 -0
  1254. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32timezone.py +1018 -0
  1255. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32traceutil.py +59 -0
  1256. py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32verstamp.py +235 -0
  1257. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winerror.py +3040 -0
  1258. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winioctlcon.py +1079 -0
  1259. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winnt.py +1347 -0
  1260. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winperf.py +236 -0
  1261. py2docfx/venv/venv1/Lib/site-packages/win32/lib/winxptheme.py +8 -0
  1262. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/ControlService.py +594 -0
  1263. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/BrandProject.py +97 -0
  1264. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/bulkstamp.py +156 -0
  1265. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/vssutil.py +201 -0
  1266. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/backupEventLog.py +46 -0
  1267. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/killProcName.py +62 -0
  1268. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/rasutil.py +98 -0
  1269. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/regsetup.py +610 -0
  1270. py2docfx/venv/venv1/Lib/site-packages/win32/scripts/setup_d.py +111 -0
  1271. py2docfx/venv/venv1/Lib/site-packages/win32/test/handles.py +167 -0
  1272. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_clipboard.py +126 -0
  1273. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_exceptions.py +213 -0
  1274. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_odbc.py +264 -0
  1275. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_pywintypes.py +111 -0
  1276. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_security.py +166 -0
  1277. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_sspi.py +229 -0
  1278. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32api.py +269 -0
  1279. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32clipboard.py +60 -0
  1280. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32cred.py +92 -0
  1281. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32crypt.py +131 -0
  1282. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32event.py +119 -0
  1283. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32file.py +1080 -0
  1284. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32gui.py +228 -0
  1285. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32guistruct.py +336 -0
  1286. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32inet.py +91 -0
  1287. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32net.py +24 -0
  1288. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32pipe.py +148 -0
  1289. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32print.py +24 -0
  1290. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32profile.py +19 -0
  1291. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32rcparser.py +70 -0
  1292. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32timezone.py +16 -0
  1293. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32trace.py +366 -0
  1294. py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32wnet.py +174 -0
  1295. py2docfx/venv/venv1/Lib/site-packages/win32/test/testall.py +223 -0
  1296. py2docfx/venv/venv1/Lib/site-packages/win32/winxpgui.py +21 -0
  1297. py2docfx/venv/venv1/Lib/site-packages/win32com/__init__.py +134 -0
  1298. py2docfx/venv/venv1/Lib/site-packages/win32com/client/CLSIDToClass.py +58 -0
  1299. py2docfx/venv/venv1/Lib/site-packages/win32com/client/__init__.py +685 -0
  1300. py2docfx/venv/venv1/Lib/site-packages/win32com/client/build.py +771 -0
  1301. py2docfx/venv/venv1/Lib/site-packages/win32com/client/combrowse.py +620 -0
  1302. py2docfx/venv/venv1/Lib/site-packages/win32com/client/connect.py +48 -0
  1303. py2docfx/venv/venv1/Lib/site-packages/win32com/client/dynamic.py +699 -0
  1304. py2docfx/venv/venv1/Lib/site-packages/win32com/client/gencache.py +807 -0
  1305. py2docfx/venv/venv1/Lib/site-packages/win32com/client/genpy.py +1398 -0
  1306. py2docfx/venv/venv1/Lib/site-packages/win32com/client/makepy.py +449 -0
  1307. py2docfx/venv/venv1/Lib/site-packages/win32com/client/selecttlb.py +183 -0
  1308. py2docfx/venv/venv1/Lib/site-packages/win32com/client/tlbrowse.py +277 -0
  1309. py2docfx/venv/venv1/Lib/site-packages/win32com/client/util.py +103 -0
  1310. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/__init__.py +0 -0
  1311. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/connect.py +96 -0
  1312. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/dump_clipboard.py +74 -0
  1313. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsApartmentThreaded.py +98 -0
  1314. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsFreeThreaded.py +92 -0
  1315. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelAddin.py +169 -0
  1316. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelRTDServer.py +434 -0
  1317. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/iebutton.py +217 -0
  1318. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/ietoolbar.py +368 -0
  1319. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/outlookAddin.py +137 -0
  1320. py2docfx/venv/venv1/Lib/site-packages/win32com/demos/trybag.py +78 -0
  1321. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/__init__.py +1 -0
  1322. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegw.py +626 -0
  1323. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwenum.py +335 -0
  1324. py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwparse.py +1019 -0
  1325. py2docfx/venv/venv1/Lib/site-packages/win32com/olectl.py +70 -0
  1326. py2docfx/venv/venv1/Lib/site-packages/win32com/server/__init__.py +1 -0
  1327. py2docfx/venv/venv1/Lib/site-packages/win32com/server/connect.py +85 -0
  1328. py2docfx/venv/venv1/Lib/site-packages/win32com/server/dispatcher.py +243 -0
  1329. py2docfx/venv/venv1/Lib/site-packages/win32com/server/exception.py +99 -0
  1330. py2docfx/venv/venv1/Lib/site-packages/win32com/server/factory.py +26 -0
  1331. py2docfx/venv/venv1/Lib/site-packages/win32com/server/localserver.py +53 -0
  1332. py2docfx/venv/venv1/Lib/site-packages/win32com/server/policy.py +817 -0
  1333. py2docfx/venv/venv1/Lib/site-packages/win32com/server/register.py +678 -0
  1334. py2docfx/venv/venv1/Lib/site-packages/win32com/server/util.py +229 -0
  1335. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/PythonTools.py +47 -0
  1336. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/__init__.py +0 -0
  1337. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/dictionary.py +136 -0
  1338. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/interp.py +59 -0
  1339. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/perfmon.py +36 -0
  1340. py2docfx/venv/venv1/Lib/site-packages/win32com/servers/test_pycomtest.py +182 -0
  1341. py2docfx/venv/venv1/Lib/site-packages/win32com/storagecon.py +142 -0
  1342. py2docfx/venv/venv1/Lib/site-packages/win32com/test/GenTestScripts.py +97 -0
  1343. py2docfx/venv/venv1/Lib/site-packages/win32com/test/__init__.py +1 -0
  1344. py2docfx/venv/venv1/Lib/site-packages/win32com/test/daodump.py +88 -0
  1345. py2docfx/venv/venv1/Lib/site-packages/win32com/test/errorSemantics.py +243 -0
  1346. py2docfx/venv/venv1/Lib/site-packages/win32com/test/pippo_server.py +99 -0
  1347. py2docfx/venv/venv1/Lib/site-packages/win32com/test/policySemantics.py +115 -0
  1348. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testADOEvents.py +100 -0
  1349. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAXScript.py +45 -0
  1350. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAccess.py +185 -0
  1351. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testArrays.py +99 -0
  1352. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testClipboard.py +169 -0
  1353. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testCollections.py +159 -0
  1354. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testConversionErrors.py +35 -0
  1355. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDCOM.py +50 -0
  1356. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDates.py +74 -0
  1357. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDictionary.py +100 -0
  1358. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDynamic.py +85 -0
  1359. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExchange.py +126 -0
  1360. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExplorer.py +139 -0
  1361. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGIT.py +142 -0
  1362. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGatewayAddresses.py +149 -0
  1363. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testIterators.py +140 -0
  1364. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOffice.py +201 -0
  1365. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOfficeEvents.py +138 -0
  1366. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMarshal.py +160 -0
  1367. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testNetscape.py +24 -0
  1368. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPersist.py +227 -0
  1369. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPippo.py +81 -0
  1370. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPyComTest.py +782 -0
  1371. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testROT.py +29 -0
  1372. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testServers.py +52 -0
  1373. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testShell.py +272 -0
  1374. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStorage.py +88 -0
  1375. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStreams.py +147 -0
  1376. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testWMI.py +18 -0
  1377. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testall.py +321 -0
  1378. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testmakepy.py +55 -0
  1379. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvb.py +579 -0
  1380. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvbscript_regexp.py +40 -0
  1381. py2docfx/venv/venv1/Lib/site-packages/win32com/test/testxslt.py +34 -0
  1382. py2docfx/venv/venv1/Lib/site-packages/win32com/test/util.py +264 -0
  1383. py2docfx/venv/venv1/Lib/site-packages/win32com/universal.py +226 -0
  1384. py2docfx/venv/venv1/Lib/site-packages/win32com/util.py +35 -0
  1385. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/__init__.py +113 -0
  1386. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/adsicon.py +340 -0
  1387. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/objectPicker.py +68 -0
  1388. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/scp.py +565 -0
  1389. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/search.py +152 -0
  1390. py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/test.py +274 -0
  1391. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/__init__.py +6 -0
  1392. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditSecurity.py +252 -0
  1393. py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditServiceSecurity.py +239 -0
  1394. py2docfx/venv/venv1/Lib/site-packages/win32comext/axcontrol/__init__.py +4 -0
  1395. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/__init__.py +4 -0
  1396. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/adb.py +473 -0
  1397. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/codecontainer.py +275 -0
  1398. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/contexts.py +60 -0
  1399. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/debugger.py +238 -0
  1400. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/documents.py +136 -0
  1401. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/dump.py +59 -0
  1402. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/expressions.py +212 -0
  1403. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/gateways.py +583 -0
  1404. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/stackframe.py +178 -0
  1405. py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/util.py +105 -0
  1406. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/__init__.py +4 -0
  1407. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/asputil.py +13 -0
  1408. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/__init__.py +1 -0
  1409. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/debug.py +235 -0
  1410. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/error.py +263 -0
  1411. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/framework.py +1291 -0
  1412. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pydumper.py +79 -0
  1413. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript.py +443 -0
  1414. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript_rexec.py +54 -0
  1415. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/scriptdispatch.py +104 -0
  1416. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/__init__.py +0 -0
  1417. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/axsite.py +146 -0
  1418. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/leakTest.py +186 -0
  1419. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost.py +240 -0
  1420. py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost4Dbg.py +86 -0
  1421. py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/__init__.py +6 -0
  1422. py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/show_all_jobs.py +48 -0
  1423. py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/test_bits.py +119 -0
  1424. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/__init__.py +4 -0
  1425. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/__init__.py +1 -0
  1426. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_record.py +60 -0
  1427. py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_test.py +402 -0
  1428. py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/__init__.py +1 -0
  1429. py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/demo/filterDemo.py +300 -0
  1430. py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/ifiltercon.py +110 -0
  1431. py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/__init__.py +4 -0
  1432. py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/inetcon.py +261 -0
  1433. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/__init__.py +21 -0
  1434. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/demos/mapisend.py +98 -0
  1435. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/emsabtags.py +874 -0
  1436. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapitags.py +1025 -0
  1437. py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapiutil.py +211 -0
  1438. py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/__init__.py +1 -0
  1439. py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/pscon.py +838 -0
  1440. py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/test/testpropsys.py +5 -0
  1441. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/__init__.py +4 -0
  1442. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IActiveDesktop.py +83 -0
  1443. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IFileOperationProgressSink.py +179 -0
  1444. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IShellLinkDataList.py +67 -0
  1445. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/ITransferAdviseSink.py +91 -0
  1446. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IUniformResourceLocator.py +56 -0
  1447. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/browse_for_folder.py +45 -0
  1448. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/create_link.py +73 -0
  1449. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/dump_link.py +58 -0
  1450. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/explorer_browser.py +143 -0
  1451. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/column_provider.py +126 -0
  1452. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/context_menu.py +122 -0
  1453. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/copy_hook.py +84 -0
  1454. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/empty_volume_cache.py +188 -0
  1455. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/folder_view.py +866 -0
  1456. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/icon_handler.py +82 -0
  1457. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/shell_view.py +972 -0
  1458. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/shellexecuteex.py +19 -0
  1459. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/viewstate.py +68 -0
  1460. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/walk_shell_folders.py +24 -0
  1461. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/shellcon.py +1615 -0
  1462. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testSHFileOperation.py +75 -0
  1463. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellFolder.py +21 -0
  1464. py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellItem.py +69 -0
  1465. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/__init__.py +6 -0
  1466. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask.py +66 -0
  1467. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_1.py +68 -0
  1468. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_2.py +50 -0
  1469. py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_localsystem.py +3 -0
  1470. py2docfx/venv/venv1/Scripts/pywin32_postinstall.py +778 -0
  1471. py2docfx/venv/venv1/Scripts/pywin32_testall.py +125 -0
  1472. py2docfx-0.1.9.dev1897607.dist-info/METADATA +16 -0
  1473. py2docfx-0.1.9.dev1897607.dist-info/RECORD +4241 -0
  1474. py2docfx/venv/venv0/Lib/site-packages/setuptools/build_meta.py +0 -530
  1475. py2docfx/venv/venv0/Lib/site-packages/setuptools/command/bdist_wheel.py +0 -635
  1476. py2docfx/venv/venv0/Lib/site-packages/setuptools/command/egg_info.py +0 -717
  1477. py2docfx/venv/venv0/Lib/site-packages/setuptools/dist.py +0 -955
  1478. py2docfx/venv/venv0/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +0 -621
  1479. py2docfx/venv/venv0/Lib/site-packages/setuptools/tests/test_dist.py +0 -280
  1480. py2docfx-0.1.9.dev1886355.dist-info/METADATA +0 -16
  1481. py2docfx-0.1.9.dev1886355.dist-info/RECORD +0 -2791
  1482. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/_distutils_hack/__init__.py +0 -0
  1483. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/_distutils_hack/override.py +0 -0
  1484. /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/operations → venv1/Lib/site-packages/azure/core/tracing/ext}/__init__.py +0 -0
  1485. /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/operations/build/__init__.py → venv1/Lib/site-packages/google/auth/crypt/_helpers.py} +0 -0
  1486. /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/resolution → venv1/Lib/site-packages/google/protobuf/compiler}/__init__.py +0 -0
  1487. /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/resolution/legacy → venv1/Lib/site-packages/google/protobuf/pyext}/__init__.py +0 -0
  1488. /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/resolution/resolvelib → venv1/Lib/site-packages/google/protobuf/testdata}/__init__.py +0 -0
  1489. /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/utils → venv1/Lib/site-packages/google/protobuf/util}/__init__.py +0 -0
  1490. /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/chardet/cli → venv1/Lib/site-packages/opencensus/common/monitored_resource}/__init__.py +0 -0
  1491. /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/chardet/metadata → venv1/Lib/site-packages/opencensus/metrics}/__init__.py +0 -0
  1492. /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/resolvelib/compat → venv1/Lib/site-packages/opencensus/metrics/export}/__init__.py +0 -0
  1493. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/__init__.py +0 -0
  1494. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/__main__.py +0 -0
  1495. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/__pip-runner__.py +0 -0
  1496. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/__init__.py +0 -0
  1497. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/build_env.py +0 -0
  1498. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cache.py +0 -0
  1499. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/__init__.py +0 -0
  1500. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/autocompletion.py +0 -0
  1501. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/base_command.py +0 -0
  1502. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/cmdoptions.py +0 -0
  1503. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/command_context.py +0 -0
  1504. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/main.py +0 -0
  1505. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/main_parser.py +0 -0
  1506. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/parser.py +0 -0
  1507. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/progress_bars.py +0 -0
  1508. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/req_command.py +0 -0
  1509. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/spinners.py +0 -0
  1510. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/status_codes.py +0 -0
  1511. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/__init__.py +0 -0
  1512. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/cache.py +0 -0
  1513. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/check.py +0 -0
  1514. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/completion.py +0 -0
  1515. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/configuration.py +0 -0
  1516. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/debug.py +0 -0
  1517. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/download.py +0 -0
  1518. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/freeze.py +0 -0
  1519. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/hash.py +0 -0
  1520. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/help.py +0 -0
  1521. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/index.py +0 -0
  1522. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/inspect.py +0 -0
  1523. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/install.py +0 -0
  1524. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/list.py +0 -0
  1525. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/search.py +0 -0
  1526. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/show.py +0 -0
  1527. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/uninstall.py +0 -0
  1528. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/wheel.py +0 -0
  1529. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/configuration.py +0 -0
  1530. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/distributions/__init__.py +0 -0
  1531. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/distributions/base.py +0 -0
  1532. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/distributions/installed.py +0 -0
  1533. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/distributions/sdist.py +0 -0
  1534. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/distributions/wheel.py +0 -0
  1535. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/exceptions.py +0 -0
  1536. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/index/__init__.py +0 -0
  1537. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/index/collector.py +0 -0
  1538. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/index/package_finder.py +0 -0
  1539. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/index/sources.py +0 -0
  1540. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/locations/__init__.py +0 -0
  1541. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/locations/_distutils.py +0 -0
  1542. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/locations/_sysconfig.py +0 -0
  1543. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/locations/base.py +0 -0
  1544. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/main.py +0 -0
  1545. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/__init__.py +0 -0
  1546. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/_json.py +0 -0
  1547. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/base.py +0 -0
  1548. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +0 -0
  1549. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py +0 -0
  1550. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +0 -0
  1551. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +0 -0
  1552. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +0 -0
  1553. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/__init__.py +0 -0
  1554. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/candidate.py +0 -0
  1555. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/direct_url.py +0 -0
  1556. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/format_control.py +0 -0
  1557. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/index.py +0 -0
  1558. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/installation_report.py +0 -0
  1559. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/link.py +0 -0
  1560. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/scheme.py +0 -0
  1561. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/search_scope.py +0 -0
  1562. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/selection_prefs.py +0 -0
  1563. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/target_python.py +0 -0
  1564. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/wheel.py +0 -0
  1565. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/__init__.py +0 -0
  1566. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/auth.py +0 -0
  1567. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/cache.py +0 -0
  1568. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/download.py +0 -0
  1569. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/lazy_wheel.py +0 -0
  1570. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/session.py +0 -0
  1571. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/utils.py +0 -0
  1572. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/xmlrpc.py +0 -0
  1573. /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/urllib3/contrib → venv1/Lib/site-packages/pip/_internal/operations}/__init__.py +0 -0
  1574. /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport → venv1/Lib/site-packages/pip/_internal/operations/build}/__init__.py +0 -0
  1575. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/build_tracker.py +0 -0
  1576. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/metadata.py +0 -0
  1577. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py +0 -0
  1578. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +0 -0
  1579. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/wheel.py +0 -0
  1580. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py +0 -0
  1581. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +0 -0
  1582. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/check.py +0 -0
  1583. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/freeze.py +0 -0
  1584. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/install/__init__.py +0 -0
  1585. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +0 -0
  1586. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/install/wheel.py +0 -0
  1587. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/prepare.py +0 -0
  1588. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/pyproject.py +0 -0
  1589. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/__init__.py +0 -0
  1590. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/constructors.py +0 -0
  1591. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/req_file.py +0 -0
  1592. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/req_install.py +0 -0
  1593. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/req_set.py +0 -0
  1594. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/req_uninstall.py +0 -0
  1595. /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/urllib3/packages → venv1/Lib/site-packages/pip/_internal/resolution}/__init__.py +0 -0
  1596. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/base.py +0 -0
  1597. /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/urllib3/packages/backports → venv1/Lib/site-packages/pip/_internal/resolution/legacy}/__init__.py +0 -0
  1598. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +0 -0
  1599. /py2docfx/venv/{venv0/Lib/site-packages/pkg_resources/tests → venv1/Lib/site-packages/pip/_internal/resolution/resolvelib}/__init__.py +0 -0
  1600. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +0 -0
  1601. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -0
  1602. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +0 -0
  1603. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +0 -0
  1604. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +0 -0
  1605. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +0 -0
  1606. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +0 -0
  1607. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +0 -0
  1608. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/self_outdated_check.py +0 -0
  1609. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_distutils/tests/compat → venv1/Lib/site-packages/pip/_internal/utils}/__init__.py +0 -0
  1610. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/_jaraco_text.py +0 -0
  1611. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/_log.py +0 -0
  1612. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/appdirs.py +0 -0
  1613. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/compat.py +0 -0
  1614. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +0 -0
  1615. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/datetime.py +0 -0
  1616. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/deprecation.py +0 -0
  1617. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +0 -0
  1618. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/egg_link.py +0 -0
  1619. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/encoding.py +0 -0
  1620. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/entrypoints.py +0 -0
  1621. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/filesystem.py +0 -0
  1622. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/filetypes.py +0 -0
  1623. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/glibc.py +0 -0
  1624. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/hashes.py +0 -0
  1625. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/logging.py +0 -0
  1626. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/misc.py +0 -0
  1627. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/models.py +0 -0
  1628. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/packaging.py +0 -0
  1629. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/setuptools_build.py +0 -0
  1630. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/subprocess.py +0 -0
  1631. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/temp_dir.py +0 -0
  1632. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/unpacking.py +0 -0
  1633. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/urls.py +0 -0
  1634. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/virtualenv.py +0 -0
  1635. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/wheel.py +0 -0
  1636. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/__init__.py +0 -0
  1637. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/bazaar.py +0 -0
  1638. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/git.py +0 -0
  1639. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/mercurial.py +0 -0
  1640. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/subversion.py +0 -0
  1641. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +0 -0
  1642. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/wheel_builder.py +0 -0
  1643. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/__init__.py +0 -0
  1644. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +0 -0
  1645. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +0 -0
  1646. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +0 -0
  1647. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +0 -0
  1648. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +0 -0
  1649. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +0 -0
  1650. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -0
  1651. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +0 -0
  1652. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +0 -0
  1653. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +0 -0
  1654. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +0 -0
  1655. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +0 -0
  1656. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/certifi/__init__.py +0 -0
  1657. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/certifi/__main__.py +0 -0
  1658. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/certifi/core.py +0 -0
  1659. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/__init__.py +0 -0
  1660. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/big5freq.py +0 -0
  1661. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/big5prober.py +0 -0
  1662. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/chardistribution.py +0 -0
  1663. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py +0 -0
  1664. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/charsetprober.py +0 -0
  1665. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/backports/tarfile/compat → venv1/Lib/site-packages/pip/_vendor/chardet/cli}/__init__.py +0 -0
  1666. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py +0 -0
  1667. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py +0 -0
  1668. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py +0 -0
  1669. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/cp949prober.py +0 -0
  1670. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/enums.py +0 -0
  1671. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/escprober.py +0 -0
  1672. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/escsm.py +0 -0
  1673. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py +0 -0
  1674. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py +0 -0
  1675. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/euckrprober.py +0 -0
  1676. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py +0 -0
  1677. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/euctwprober.py +0 -0
  1678. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py +0 -0
  1679. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py +0 -0
  1680. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py +0 -0
  1681. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/jisfreq.py +0 -0
  1682. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/johabfreq.py +0 -0
  1683. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/johabprober.py +0 -0
  1684. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/jpcntx.py +0 -0
  1685. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +0 -0
  1686. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py +0 -0
  1687. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py +0 -0
  1688. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py +0 -0
  1689. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py +0 -0
  1690. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py +0 -0
  1691. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py +0 -0
  1692. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/latin1prober.py +0 -0
  1693. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/macromanprober.py +0 -0
  1694. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py +0 -0
  1695. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +0 -0
  1696. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/mbcssm.py +0 -0
  1697. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat → venv1/Lib/site-packages/pip/_vendor/chardet/metadata}/__init__.py +0 -0
  1698. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py +0 -0
  1699. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/resultdict.py +0 -0
  1700. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py +0 -0
  1701. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +0 -0
  1702. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/sjisprober.py +0 -0
  1703. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/universaldetector.py +0 -0
  1704. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py +0 -0
  1705. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/utf8prober.py +0 -0
  1706. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/version.py +0 -0
  1707. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/__init__.py +0 -0
  1708. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/ansi.py +0 -0
  1709. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py +0 -0
  1710. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/initialise.py +0 -0
  1711. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py +0 -0
  1712. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py +0 -0
  1713. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py +0 -0
  1714. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py +0 -0
  1715. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py +0 -0
  1716. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/utils.py +0 -0
  1717. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py +0 -0
  1718. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/win32.py +0 -0
  1719. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/winterm.py +0 -0
  1720. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/__init__.py +0 -0
  1721. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/compat.py +0 -0
  1722. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/database.py +0 -0
  1723. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/index.py +0 -0
  1724. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/locators.py +0 -0
  1725. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/manifest.py +0 -0
  1726. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/markers.py +0 -0
  1727. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/metadata.py +0 -0
  1728. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/resources.py +0 -0
  1729. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/scripts.py +0 -0
  1730. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/util.py +0 -0
  1731. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/version.py +0 -0
  1732. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/wheel.py +0 -0
  1733. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distro/__init__.py +0 -0
  1734. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distro/__main__.py +0 -0
  1735. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distro/distro.py +0 -0
  1736. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/__init__.py +0 -0
  1737. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/codec.py +0 -0
  1738. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/compat.py +0 -0
  1739. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/core.py +0 -0
  1740. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/idnadata.py +0 -0
  1741. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/intranges.py +0 -0
  1742. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/package_data.py +0 -0
  1743. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/uts46data.py +0 -0
  1744. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/msgpack/__init__.py +0 -0
  1745. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +0 -0
  1746. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/msgpack/ext.py +0 -0
  1747. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/msgpack/fallback.py +0 -0
  1748. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/__about__.py +0 -0
  1749. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/__init__.py +0 -0
  1750. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +0 -0
  1751. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +0 -0
  1752. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/_structures.py +0 -0
  1753. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/markers.py +0 -0
  1754. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/requirements.py +0 -0
  1755. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/specifiers.py +0 -0
  1756. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/tags.py +0 -0
  1757. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/utils.py +0 -0
  1758. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/version.py +0 -0
  1759. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +0 -0
  1760. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +0 -0
  1761. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +0 -0
  1762. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/android.py +0 -0
  1763. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/api.py +0 -0
  1764. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/macos.py +0 -0
  1765. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/unix.py +0 -0
  1766. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/version.py +0 -0
  1767. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/windows.py +0 -0
  1768. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/__init__.py +0 -0
  1769. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/__main__.py +0 -0
  1770. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/cmdline.py +0 -0
  1771. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/console.py +0 -0
  1772. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/filter.py +0 -0
  1773. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +0 -0
  1774. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatter.py +0 -0
  1775. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +0 -0
  1776. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py +0 -0
  1777. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py +0 -0
  1778. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py +0 -0
  1779. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/html.py +0 -0
  1780. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/img.py +0 -0
  1781. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py +0 -0
  1782. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py +0 -0
  1783. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/other.py +0 -0
  1784. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py +0 -0
  1785. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py +0 -0
  1786. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py +0 -0
  1787. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py +0 -0
  1788. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py +0 -0
  1789. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/lexer.py +0 -0
  1790. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +0 -0
  1791. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +0 -0
  1792. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +0 -0
  1793. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/modeline.py +0 -0
  1794. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/plugin.py +0 -0
  1795. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/regexopt.py +0 -0
  1796. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/scanner.py +0 -0
  1797. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +0 -0
  1798. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/style.py +0 -0
  1799. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +0 -0
  1800. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/token.py +0 -0
  1801. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/unistring.py +0 -0
  1802. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/util.py +0 -0
  1803. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/__init__.py +0 -0
  1804. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/actions.py +0 -0
  1805. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/common.py +0 -0
  1806. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/core.py +0 -0
  1807. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py +0 -0
  1808. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py +0 -0
  1809. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/helpers.py +0 -0
  1810. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/results.py +0 -0
  1811. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/testing.py +0 -0
  1812. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/unicode.py +0 -0
  1813. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/util.py +0 -0
  1814. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +0 -0
  1815. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyproject_hooks/_compat.py +0 -0
  1816. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +0 -0
  1817. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -0
  1818. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -0
  1819. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/__init__.py +0 -0
  1820. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/__version__.py +0 -0
  1821. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +0 -0
  1822. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/adapters.py +0 -0
  1823. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/api.py +0 -0
  1824. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/auth.py +0 -0
  1825. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/certs.py +0 -0
  1826. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/compat.py +0 -0
  1827. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/cookies.py +0 -0
  1828. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/exceptions.py +0 -0
  1829. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/help.py +0 -0
  1830. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/hooks.py +0 -0
  1831. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/models.py +0 -0
  1832. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/packages.py +0 -0
  1833. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/sessions.py +0 -0
  1834. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/status_codes.py +0 -0
  1835. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/structures.py +0 -0
  1836. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/utils.py +0 -0
  1837. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +0 -0
  1838. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources → venv1/Lib/site-packages/pip/_vendor/resolvelib}/compat/__init__.py +0 -0
  1839. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +0 -0
  1840. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/providers.py +0 -0
  1841. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +0 -0
  1842. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py +0 -0
  1843. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/structs.py +0 -0
  1844. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/__init__.py +0 -0
  1845. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/__main__.py +0 -0
  1846. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +0 -0
  1847. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py +0 -0
  1848. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py +0 -0
  1849. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_export_format.py +0 -0
  1850. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_extension.py +0 -0
  1851. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_fileno.py +0 -0
  1852. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_inspect.py +0 -0
  1853. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_log_render.py +0 -0
  1854. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_loop.py +0 -0
  1855. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_null_file.py +0 -0
  1856. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_palettes.py +0 -0
  1857. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_pick.py +0 -0
  1858. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_ratio.py +0 -0
  1859. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_spinners.py +0 -0
  1860. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_stack.py +0 -0
  1861. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_timer.py +0 -0
  1862. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_win32_console.py +0 -0
  1863. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_windows.py +0 -0
  1864. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py +0 -0
  1865. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_wrap.py +0 -0
  1866. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/abc.py +0 -0
  1867. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/align.py +0 -0
  1868. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/ansi.py +0 -0
  1869. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/bar.py +0 -0
  1870. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/box.py +0 -0
  1871. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/cells.py +0 -0
  1872. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/color.py +0 -0
  1873. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/color_triplet.py +0 -0
  1874. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/columns.py +0 -0
  1875. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/console.py +0 -0
  1876. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/constrain.py +0 -0
  1877. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/containers.py +0 -0
  1878. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/control.py +0 -0
  1879. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/default_styles.py +0 -0
  1880. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/diagnose.py +0 -0
  1881. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/emoji.py +0 -0
  1882. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/errors.py +0 -0
  1883. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/file_proxy.py +0 -0
  1884. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/filesize.py +0 -0
  1885. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/highlighter.py +0 -0
  1886. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/json.py +0 -0
  1887. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/jupyter.py +0 -0
  1888. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/layout.py +0 -0
  1889. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/live.py +0 -0
  1890. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/live_render.py +0 -0
  1891. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/logging.py +0 -0
  1892. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/markup.py +0 -0
  1893. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/measure.py +0 -0
  1894. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/padding.py +0 -0
  1895. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/pager.py +0 -0
  1896. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/palette.py +0 -0
  1897. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/panel.py +0 -0
  1898. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/pretty.py +0 -0
  1899. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/progress.py +0 -0
  1900. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/progress_bar.py +0 -0
  1901. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/prompt.py +0 -0
  1902. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/protocol.py +0 -0
  1903. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/region.py +0 -0
  1904. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/repr.py +0 -0
  1905. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/rule.py +0 -0
  1906. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/scope.py +0 -0
  1907. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/screen.py +0 -0
  1908. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/segment.py +0 -0
  1909. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/spinner.py +0 -0
  1910. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/status.py +0 -0
  1911. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/style.py +0 -0
  1912. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/styled.py +0 -0
  1913. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/syntax.py +0 -0
  1914. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/table.py +0 -0
  1915. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/terminal_theme.py +0 -0
  1916. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/text.py +0 -0
  1917. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/theme.py +0 -0
  1918. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/themes.py +0 -0
  1919. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/traceback.py +0 -0
  1920. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/tree.py +0 -0
  1921. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/six.py +0 -0
  1922. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/__init__.py +0 -0
  1923. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/_asyncio.py +0 -0
  1924. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/_utils.py +0 -0
  1925. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/after.py +0 -0
  1926. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/before.py +0 -0
  1927. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py +0 -0
  1928. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/nap.py +0 -0
  1929. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/retry.py +0 -0
  1930. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/stop.py +0 -0
  1931. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py +0 -0
  1932. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/wait.py +0 -0
  1933. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tomli/__init__.py +0 -0
  1934. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tomli/_parser.py +0 -0
  1935. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tomli/_re.py +0 -0
  1936. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tomli/_types.py +0 -0
  1937. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/__init__.py +0 -0
  1938. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/_api.py +0 -0
  1939. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/_macos.py +0 -0
  1940. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/_openssl.py +0 -0
  1941. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py +0 -0
  1942. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/_windows.py +0 -0
  1943. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/typing_extensions.py +0 -0
  1944. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/__init__.py +0 -0
  1945. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/_collections.py +0 -0
  1946. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/_version.py +0 -0
  1947. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/connection.py +0 -0
  1948. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +0 -0
  1949. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/future → venv1/Lib/site-packages/pip/_vendor/urllib3/contrib}/__init__.py +0 -0
  1950. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -0
  1951. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests → venv1/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport}/__init__.py +0 -0
  1952. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -0
  1953. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -0
  1954. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +0 -0
  1955. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -0
  1956. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -0
  1957. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +0 -0
  1958. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +0 -0
  1959. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +0 -0
  1960. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/fields.py +0 -0
  1961. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/filepost.py +0 -0
  1962. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat → venv1/Lib/site-packages/pip/_vendor/urllib3/packages}/__init__.py +0 -0
  1963. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01 → venv1/Lib/site-packages/pip/_vendor/urllib3/packages/backports}/__init__.py +0 -0
  1964. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +0 -0
  1965. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -0
  1966. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +0 -0
  1967. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +0 -0
  1968. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/request.py +0 -0
  1969. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/response.py +0 -0
  1970. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +0 -0
  1971. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +0 -0
  1972. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +0 -0
  1973. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +0 -0
  1974. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/request.py +0 -0
  1975. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/response.py +0 -0
  1976. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +0 -0
  1977. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +0 -0
  1978. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -0
  1979. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +0 -0
  1980. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +0 -0
  1981. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/url.py +0 -0
  1982. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +0 -0
  1983. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/webencodings/__init__.py +0 -0
  1984. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/webencodings/labels.py +0 -0
  1985. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/webencodings/mklabels.py +0 -0
  1986. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/webencodings/tests.py +0 -0
  1987. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py +0 -0
  1988. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/__init__.py +0 -0
  1989. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory → venv1/Lib/site-packages/pkg_resources/tests}/__init__.py +0 -0
  1990. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py +0 -0
  1991. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_find_distributions.py +0 -0
  1992. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_integration_zope_interface.py +0 -0
  1993. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_markers.py +0 -0
  1994. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +0 -0
  1995. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_resources.py +0 -0
  1996. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_working_set.py +0 -0
  1997. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02 → venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx}/__init__.py +0 -0
  1998. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one → venv1/Lib/site-packages/pythonwin/pywin/dialogs}/__init__.py +0 -0
  1999. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two → venv1/Lib/site-packages/pythonwin/pywin/docking}/__init__.py +0 -0
  2000. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/inflect/compat → venv1/Lib/site-packages/pythonwin/pywin/framework}/__init__.py +0 -0
  2001. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/wheel/vendored → venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color}/__init__.py +0 -0
  2002. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging → venv1/Lib/site-packages/pythonwin/pywin/mfc}/__init__.py +0 -0
  2003. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/zipp/compat → venv1/Lib/site-packages/pythonwin/pywin/tools}/__init__.py +0 -0
  2004. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/__init__.py +0 -0
  2005. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_core_metadata.py +0 -0
  2006. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/__init__.py +0 -0
  2007. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/_log.py +0 -0
  2008. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/_macos_compat.py +0 -0
  2009. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/_modified.py +0 -0
  2010. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +0 -0
  2011. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/archive_util.py +0 -0
  2012. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/ccompiler.py +0 -0
  2013. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/cmd.py +0 -0
  2014. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/__init__.py +0 -0
  2015. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/_framework_compat.py +0 -0
  2016. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/bdist.py +0 -0
  2017. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py +0 -0
  2018. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py +0 -0
  2019. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/build.py +0 -0
  2020. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/build_clib.py +0 -0
  2021. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/build_ext.py +0 -0
  2022. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/build_py.py +0 -0
  2023. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +0 -0
  2024. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/check.py +0 -0
  2025. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/clean.py +0 -0
  2026. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/config.py +0 -0
  2027. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install.py +0 -0
  2028. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install_data.py +0 -0
  2029. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py +0 -0
  2030. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install_headers.py +0 -0
  2031. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install_lib.py +0 -0
  2032. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install_scripts.py +0 -0
  2033. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/sdist.py +0 -0
  2034. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/compat/__init__.py +0 -0
  2035. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/compat/py38.py +0 -0
  2036. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/compat/py39.py +0 -0
  2037. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/core.py +0 -0
  2038. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py +0 -0
  2039. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/debug.py +0 -0
  2040. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/dep_util.py +0 -0
  2041. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/dir_util.py +0 -0
  2042. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/dist.py +0 -0
  2043. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/errors.py +0 -0
  2044. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/extension.py +0 -0
  2045. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/fancy_getopt.py +0 -0
  2046. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/file_util.py +0 -0
  2047. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/filelist.py +0 -0
  2048. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/log.py +0 -0
  2049. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/spawn.py +0 -0
  2050. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -0
  2051. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/__init__.py +0 -0
  2052. /py2docfx/venv/{venv0/Lib/site-packages/setuptools → venv1/Lib/site-packages/setuptools/_distutils/tests}/compat/__init__.py +0 -0
  2053. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/compat/py38.py +0 -0
  2054. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/support.py +0 -0
  2055. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_archive_util.py +0 -0
  2056. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_bdist.py +0 -0
  2057. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_bdist_dumb.py +0 -0
  2058. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_bdist_rpm.py +0 -0
  2059. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_build.py +0 -0
  2060. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_build_clib.py +0 -0
  2061. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +0 -0
  2062. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_build_py.py +0 -0
  2063. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_build_scripts.py +0 -0
  2064. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_ccompiler.py +0 -0
  2065. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_check.py +0 -0
  2066. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_clean.py +0 -0
  2067. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_cmd.py +0 -0
  2068. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_config_cmd.py +0 -0
  2069. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_core.py +0 -0
  2070. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_cygwinccompiler.py +0 -0
  2071. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +0 -0
  2072. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_dist.py +0 -0
  2073. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_extension.py +0 -0
  2074. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_file_util.py +0 -0
  2075. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_filelist.py +0 -0
  2076. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_install.py +0 -0
  2077. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_install_data.py +0 -0
  2078. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_install_headers.py +0 -0
  2079. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_install_lib.py +0 -0
  2080. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_install_scripts.py +0 -0
  2081. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_log.py +0 -0
  2082. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_mingwccompiler.py +0 -0
  2083. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_modified.py +0 -0
  2084. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_msvccompiler.py +0 -0
  2085. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_sdist.py +0 -0
  2086. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_spawn.py +0 -0
  2087. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_sysconfig.py +0 -0
  2088. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_text_file.py +0 -0
  2089. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_unixccompiler.py +0 -0
  2090. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_util.py +0 -0
  2091. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_version.py +0 -0
  2092. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_versionpredicate.py +0 -0
  2093. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/unix_compat.py +0 -0
  2094. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/text_file.py +0 -0
  2095. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/unixccompiler.py +0 -0
  2096. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/util.py +0 -0
  2097. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/version.py +0 -0
  2098. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/versionpredicate.py +0 -0
  2099. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/zosccompiler.py +0 -0
  2100. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_entry_points.py +0 -0
  2101. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_imp.py +0 -0
  2102. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_importlib.py +0 -0
  2103. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_itertools.py +0 -0
  2104. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_normalization.py +0 -0
  2105. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_path.py +0 -0
  2106. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_reqs.py +0 -0
  2107. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/__init__.py +0 -0
  2108. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/autoasync.py +0 -0
  2109. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/autocommand.py +0 -0
  2110. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/automain.py +0 -0
  2111. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/autoparse.py +0 -0
  2112. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/errors.py +0 -0
  2113. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/backports/__init__.py +0 -0
  2114. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/backports/tarfile/__init__.py +0 -0
  2115. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/backports/tarfile/__main__.py +0 -0
  2116. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/tests → venv1/Lib/site-packages/setuptools/_vendor/backports/tarfile}/compat/__init__.py +0 -0
  2117. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/backports/tarfile/compat/py38.py +0 -0
  2118. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/__init__.py +0 -0
  2119. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py +0 -0
  2120. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_collections.py +0 -0
  2121. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_compat.py +0 -0
  2122. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_functools.py +0 -0
  2123. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py +0 -0
  2124. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_meta.py +0 -0
  2125. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_text.py +0 -0
  2126. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/tests/config → venv1/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat}/__init__.py +0 -0
  2127. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/py311.py +0 -0
  2128. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/py39.py +0 -0
  2129. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/diagnose.py +0 -0
  2130. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -0
  2131. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -0
  2132. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -0
  2133. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -0
  2134. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -0
  2135. /py2docfx/venv/{venv0/Lib/site-packages/setuptools/tests/integration → venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat}/__init__.py +0 -0
  2136. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -0
  2137. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -0
  2138. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -0
  2139. /py2docfx/venv/{venv0/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future}/__init__.py +0 -0
  2140. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -0
  2141. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -0
  2142. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -0
  2143. /py2docfx/venv/{venv0/Lib/site-packages/wheel/vendored/packaging → venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests}/__init__.py +0 -0
  2144. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -0
  2145. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -0
  2146. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -0
  2147. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -0
  2148. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -0
  2149. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -0
  2150. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -0
  2151. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -0
  2152. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -0
  2153. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -0
  2154. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -0
  2155. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -0
  2156. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -0
  2157. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -0
  2158. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -0
  2159. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/inflect/__init__.py +0 -0
  2160. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/inflect/compat/py38.py +0 -0
  2161. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/collections/__init__.py +0 -0
  2162. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/context.py +0 -0
  2163. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.py +0 -0
  2164. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/__init__.py +0 -0
  2165. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/layouts.py +0 -0
  2166. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/show-newlines.py +0 -0
  2167. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/strip-prefix.py +0 -0
  2168. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/to-dvorak.py +0 -0
  2169. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/to-qwerty.py +0 -0
  2170. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py +0 -0
  2171. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/more_itertools/more.py +0 -0
  2172. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py +0 -0
  2173. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +0 -0
  2174. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +0 -0
  2175. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +0 -0
  2176. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_musllinux.py +0 -0
  2177. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_parser.py +0 -0
  2178. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_structures.py +0 -0
  2179. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_tokenizer.py +0 -0
  2180. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/markers.py +0 -0
  2181. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +0 -0
  2182. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/requirements.py +0 -0
  2183. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +0 -0
  2184. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/tags.py +0 -0
  2185. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/utils.py +0 -0
  2186. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/version.py +0 -0
  2187. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/__init__.py +0 -0
  2188. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/__main__.py +0 -0
  2189. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/android.py +0 -0
  2190. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/api.py +0 -0
  2191. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/macos.py +0 -0
  2192. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/unix.py +0 -0
  2193. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/version.py +0 -0
  2194. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/windows.py +0 -0
  2195. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/tomli/__init__.py +0 -0
  2196. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/tomli/_parser.py +0 -0
  2197. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/tomli/_re.py +0 -0
  2198. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/tomli/_types.py +0 -0
  2199. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/__init__.py +0 -0
  2200. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_checkers.py +0 -0
  2201. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_config.py +0 -0
  2202. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_decorators.py +0 -0
  2203. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_exceptions.py +0 -0
  2204. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_functions.py +0 -0
  2205. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_importhook.py +0 -0
  2206. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_memo.py +0 -0
  2207. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_pytest_plugin.py +0 -0
  2208. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_suppression.py +0 -0
  2209. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_transformer.py +0 -0
  2210. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_union_transformer.py +0 -0
  2211. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_utils.py +0 -0
  2212. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typing_extensions.py +0 -0
  2213. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +0 -0
  2214. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/__main__.py +0 -0
  2215. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +0 -0
  2216. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +0 -0
  2217. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +0 -0
  2218. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +0 -0
  2219. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/cli/pack.py +0 -0
  2220. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/cli/tags.py +0 -0
  2221. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/cli/unpack.py +0 -0
  2222. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +0 -0
  2223. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +0 -0
  2224. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -0
  2225. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_elffile.py +0 -0
  2226. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_manylinux.py +0 -0
  2227. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_musllinux.py +0 -0
  2228. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_parser.py +0 -0
  2229. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_structures.py +0 -0
  2230. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_tokenizer.py +0 -0
  2231. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/markers.py +0 -0
  2232. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/requirements.py +0 -0
  2233. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/specifiers.py +0 -0
  2234. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/tags.py +0 -0
  2235. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/utils.py +0 -0
  2236. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/version.py +0 -0
  2237. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +0 -0
  2238. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/zipp/__init__.py +0 -0
  2239. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/zipp/compat/py310.py +0 -0
  2240. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/zipp/glob.py +0 -0
  2241. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/archive_util.py +0 -0
  2242. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/__init__.py +0 -0
  2243. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/_requirestxt.py +0 -0
  2244. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/alias.py +0 -0
  2245. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/bdist_egg.py +0 -0
  2246. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/bdist_rpm.py +0 -0
  2247. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/build.py +0 -0
  2248. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/build_clib.py +0 -0
  2249. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/build_ext.py +0 -0
  2250. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/build_py.py +0 -0
  2251. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/develop.py +0 -0
  2252. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/dist_info.py +0 -0
  2253. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/easy_install.py +0 -0
  2254. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/editable_wheel.py +0 -0
  2255. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/install.py +0 -0
  2256. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/install_egg_info.py +0 -0
  2257. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/install_lib.py +0 -0
  2258. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/install_scripts.py +0 -0
  2259. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/rotate.py +0 -0
  2260. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/saveopts.py +0 -0
  2261. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/sdist.py +0 -0
  2262. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/setopt.py +0 -0
  2263. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/test.py +0 -0
  2264. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/compat/py310.py +0 -0
  2265. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/compat/py311.py +0 -0
  2266. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/compat/py312.py +0 -0
  2267. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/compat/py39.py +0 -0
  2268. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/__init__.py +0 -0
  2269. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +0 -0
  2270. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/__init__.py +0 -0
  2271. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/error_reporting.py +0 -0
  2272. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +0 -0
  2273. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py +0 -0
  2274. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +0 -0
  2275. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +0 -0
  2276. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/expand.py +0 -0
  2277. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/pyprojecttoml.py +0 -0
  2278. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/setupcfg.py +0 -0
  2279. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/depends.py +0 -0
  2280. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/discovery.py +0 -0
  2281. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/errors.py +0 -0
  2282. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/extension.py +0 -0
  2283. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/glob.py +0 -0
  2284. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/installer.py +0 -0
  2285. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/launch.py +0 -0
  2286. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/logging.py +0 -0
  2287. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/modified.py +0 -0
  2288. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/monkey.py +0 -0
  2289. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/msvc.py +0 -0
  2290. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/namespaces.py +0 -0
  2291. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/package_index.py +0 -0
  2292. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/sandbox.py +0 -0
  2293. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/__init__.py +0 -0
  2294. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/compat/py39.py +0 -0
  2295. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +0 -0
  2296. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/downloads/preload.py +0 -0
  2297. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +0 -0
  2298. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/test_expand.py +0 -0
  2299. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +0 -0
  2300. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +0 -0
  2301. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +0 -0
  2302. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/contexts.py +0 -0
  2303. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/environment.py +0 -0
  2304. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/fixtures.py +0 -0
  2305. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/integration/helpers.py +0 -0
  2306. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +0 -0
  2307. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/mod_with_constant.py +0 -0
  2308. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/namespaces.py +0 -0
  2309. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/script-with-bom.py +0 -0
  2310. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/server.py +0 -0
  2311. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_archive_util.py +0 -0
  2312. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_bdist_deprecations.py +0 -0
  2313. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_bdist_egg.py +0 -0
  2314. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_build.py +0 -0
  2315. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_build_clib.py +0 -0
  2316. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_build_ext.py +0 -0
  2317. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_build_meta.py +0 -0
  2318. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_build_py.py +0 -0
  2319. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_config_discovery.py +0 -0
  2320. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_core_metadata.py +0 -0
  2321. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_depends.py +0 -0
  2322. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_develop.py +0 -0
  2323. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_dist_info.py +0 -0
  2324. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +0 -0
  2325. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_easy_install.py +0 -0
  2326. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_editable_install.py +0 -0
  2327. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_egg_info.py +0 -0
  2328. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_extern.py +0 -0
  2329. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_find_packages.py +0 -0
  2330. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_find_py_modules.py +0 -0
  2331. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_glob.py +0 -0
  2332. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_install_scripts.py +0 -0
  2333. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_logging.py +0 -0
  2334. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_manifest.py +0 -0
  2335. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_namespaces.py +0 -0
  2336. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_packageindex.py +0 -0
  2337. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_sandbox.py +0 -0
  2338. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_sdist.py +0 -0
  2339. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_setopt.py +0 -0
  2340. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_setuptools.py +0 -0
  2341. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_unicode_utils.py +0 -0
  2342. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_virtualenv.py +0 -0
  2343. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_warnings.py +0 -0
  2344. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_wheel.py +0 -0
  2345. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +0 -0
  2346. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/text.py +0 -0
  2347. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/textwrap.py +0 -0
  2348. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/unicode_utils.py +0 -0
  2349. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/version.py +0 -0
  2350. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/warnings.py +0 -0
  2351. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/wheel.py +0 -0
  2352. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/windows_support.py +0 -0
  2353. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/__init__.py +0 -0
  2354. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/__main__.py +0 -0
  2355. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/_bdist_wheel.py +0 -0
  2356. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/_setuptools_logging.py +0 -0
  2357. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/bdist_wheel.py +0 -0
  2358. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/cli/__init__.py +0 -0
  2359. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/cli/convert.py +0 -0
  2360. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/cli/pack.py +0 -0
  2361. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/cli/tags.py +0 -0
  2362. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/cli/unpack.py +0 -0
  2363. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/macosx_libfile.py +0 -0
  2364. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/metadata.py +0 -0
  2365. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/util.py +0 -0
  2366. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_elffile.py +0 -0
  2367. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_manylinux.py +0 -0
  2368. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_musllinux.py +0 -0
  2369. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_parser.py +0 -0
  2370. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_structures.py +0 -0
  2371. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_tokenizer.py +0 -0
  2372. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/markers.py +0 -0
  2373. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/requirements.py +0 -0
  2374. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/specifiers.py +0 -0
  2375. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/tags.py +0 -0
  2376. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/utils.py +0 -0
  2377. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/version.py +0 -0
  2378. /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/wheelfile.py +0 -0
  2379. {py2docfx-0.1.9.dev1886355.dist-info → py2docfx-0.1.9.dev1897607.dist-info}/WHEEL +0 -0
  2380. {py2docfx-0.1.9.dev1886355.dist-info → py2docfx-0.1.9.dev1897607.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,2348 @@
1
+ #!/usr/bin/env python3
2
+
3
+ # Copyright (c) 2009, Giampaolo Rodola'. All rights reserved.
4
+ # Use of this source code is governed by a BSD-style license that can be
5
+ # found in the LICENSE file.
6
+
7
+ """Linux specific tests."""
8
+
9
+ from __future__ import division
10
+
11
+ import collections
12
+ import contextlib
13
+ import errno
14
+ import glob
15
+ import io
16
+ import os
17
+ import re
18
+ import shutil
19
+ import socket
20
+ import struct
21
+ import textwrap
22
+ import time
23
+ import warnings
24
+
25
+ import psutil
26
+ from psutil import LINUX
27
+ from psutil._compat import PY3
28
+ from psutil._compat import FileNotFoundError
29
+ from psutil._compat import basestring
30
+ from psutil.tests import AARCH64
31
+ from psutil.tests import GITHUB_ACTIONS
32
+ from psutil.tests import GLOBAL_TIMEOUT
33
+ from psutil.tests import HAS_BATTERY
34
+ from psutil.tests import HAS_CPU_FREQ
35
+ from psutil.tests import HAS_GETLOADAVG
36
+ from psutil.tests import HAS_RLIMIT
37
+ from psutil.tests import PYPY
38
+ from psutil.tests import PYTEST_PARALLEL
39
+ from psutil.tests import QEMU_USER
40
+ from psutil.tests import TOLERANCE_DISK_USAGE
41
+ from psutil.tests import TOLERANCE_SYS_MEM
42
+ from psutil.tests import PsutilTestCase
43
+ from psutil.tests import ThreadTask
44
+ from psutil.tests import call_until
45
+ from psutil.tests import mock
46
+ from psutil.tests import pytest
47
+ from psutil.tests import reload_module
48
+ from psutil.tests import retry_on_failure
49
+ from psutil.tests import safe_rmpath
50
+ from psutil.tests import sh
51
+ from psutil.tests import skip_on_not_implemented
52
+ from psutil.tests import which
53
+
54
+
55
+ if LINUX:
56
+ from psutil._pslinux import CLOCK_TICKS
57
+ from psutil._pslinux import RootFsDeviceFinder
58
+ from psutil._pslinux import calculate_avail_vmem
59
+ from psutil._pslinux import open_binary
60
+
61
+
62
+ HERE = os.path.abspath(os.path.dirname(__file__))
63
+ SIOCGIFADDR = 0x8915
64
+ SIOCGIFCONF = 0x8912
65
+ SIOCGIFHWADDR = 0x8927
66
+ SIOCGIFNETMASK = 0x891B
67
+ SIOCGIFBRDADDR = 0x8919
68
+ if LINUX:
69
+ SECTOR_SIZE = 512
70
+ EMPTY_TEMPERATURES = not glob.glob('/sys/class/hwmon/hwmon*')
71
+
72
+
73
+ # =====================================================================
74
+ # --- utils
75
+ # =====================================================================
76
+
77
+
78
+ def get_ipv4_address(ifname):
79
+ import fcntl
80
+
81
+ ifname = ifname[:15]
82
+ if PY3:
83
+ ifname = bytes(ifname, 'ascii')
84
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
85
+ with contextlib.closing(s):
86
+ return socket.inet_ntoa(
87
+ fcntl.ioctl(s.fileno(), SIOCGIFADDR, struct.pack('256s', ifname))[
88
+ 20:24
89
+ ]
90
+ )
91
+
92
+
93
+ def get_ipv4_netmask(ifname):
94
+ import fcntl
95
+
96
+ ifname = ifname[:15]
97
+ if PY3:
98
+ ifname = bytes(ifname, 'ascii')
99
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
100
+ with contextlib.closing(s):
101
+ return socket.inet_ntoa(
102
+ fcntl.ioctl(
103
+ s.fileno(), SIOCGIFNETMASK, struct.pack('256s', ifname)
104
+ )[20:24]
105
+ )
106
+
107
+
108
+ def get_ipv4_broadcast(ifname):
109
+ import fcntl
110
+
111
+ ifname = ifname[:15]
112
+ if PY3:
113
+ ifname = bytes(ifname, 'ascii')
114
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
115
+ with contextlib.closing(s):
116
+ return socket.inet_ntoa(
117
+ fcntl.ioctl(
118
+ s.fileno(), SIOCGIFBRDADDR, struct.pack('256s', ifname)
119
+ )[20:24]
120
+ )
121
+
122
+
123
+ def get_ipv6_addresses(ifname):
124
+ with open("/proc/net/if_inet6") as f:
125
+ all_fields = []
126
+ for line in f:
127
+ fields = line.split()
128
+ if fields[-1] == ifname:
129
+ all_fields.append(fields)
130
+
131
+ if len(all_fields) == 0:
132
+ raise ValueError("could not find interface %r" % ifname)
133
+
134
+ for i in range(len(all_fields)):
135
+ unformatted = all_fields[i][0]
136
+ groups = []
137
+ for j in range(0, len(unformatted), 4):
138
+ groups.append(unformatted[j : j + 4])
139
+ formatted = ":".join(groups)
140
+ packed = socket.inet_pton(socket.AF_INET6, formatted)
141
+ all_fields[i] = socket.inet_ntop(socket.AF_INET6, packed)
142
+ return all_fields
143
+
144
+
145
+ def get_mac_address(ifname):
146
+ import fcntl
147
+
148
+ ifname = ifname[:15]
149
+ if PY3:
150
+ ifname = bytes(ifname, 'ascii')
151
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
152
+ with contextlib.closing(s):
153
+ info = fcntl.ioctl(
154
+ s.fileno(), SIOCGIFHWADDR, struct.pack('256s', ifname)
155
+ )
156
+ if PY3:
157
+
158
+ def ord(x):
159
+ return x
160
+
161
+ else:
162
+ import __builtin__
163
+
164
+ ord = __builtin__.ord
165
+ return ''.join(['%02x:' % ord(char) for char in info[18:24]])[:-1]
166
+
167
+
168
+ def free_swap():
169
+ """Parse 'free' cmd and return swap memory's s total, used and free
170
+ values.
171
+ """
172
+ out = sh(["free", "-b"], env={"LANG": "C.UTF-8"})
173
+ lines = out.split('\n')
174
+ for line in lines:
175
+ if line.startswith('Swap'):
176
+ _, total, used, free = line.split()
177
+ nt = collections.namedtuple('free', 'total used free')
178
+ return nt(int(total), int(used), int(free))
179
+ raise ValueError(
180
+ "can't find 'Swap' in 'free' output:\n%s" % '\n'.join(lines)
181
+ )
182
+
183
+
184
+ def free_physmem():
185
+ """Parse 'free' cmd and return physical memory's total, used
186
+ and free values.
187
+ """
188
+ # Note: free can have 2 different formats, invalidating 'shared'
189
+ # and 'cached' memory which may have different positions so we
190
+ # do not return them.
191
+ # https://github.com/giampaolo/psutil/issues/538#issuecomment-57059946
192
+ out = sh(["free", "-b"], env={"LANG": "C.UTF-8"})
193
+ lines = out.split('\n')
194
+ for line in lines:
195
+ if line.startswith('Mem'):
196
+ total, used, free, shared = (int(x) for x in line.split()[1:5])
197
+ nt = collections.namedtuple(
198
+ 'free', 'total used free shared output'
199
+ )
200
+ return nt(total, used, free, shared, out)
201
+ raise ValueError(
202
+ "can't find 'Mem' in 'free' output:\n%s" % '\n'.join(lines)
203
+ )
204
+
205
+
206
+ def vmstat(stat):
207
+ out = sh(["vmstat", "-s"], env={"LANG": "C.UTF-8"})
208
+ for line in out.split("\n"):
209
+ line = line.strip()
210
+ if stat in line:
211
+ return int(line.split(' ')[0])
212
+ raise ValueError("can't find %r in 'vmstat' output" % stat)
213
+
214
+
215
+ def get_free_version_info():
216
+ out = sh(["free", "-V"]).strip()
217
+ if 'UNKNOWN' in out:
218
+ raise pytest.skip("can't determine free version")
219
+ return tuple(map(int, re.findall(r'\d+', out.split()[-1])))
220
+
221
+
222
+ @contextlib.contextmanager
223
+ def mock_open_content(pairs):
224
+ """Mock open() builtin and forces it to return a certain content
225
+ for a given path. `pairs` is a {"path": "content", ...} dict.
226
+ """
227
+
228
+ def open_mock(name, *args, **kwargs):
229
+ if name in pairs:
230
+ content = pairs[name]
231
+ if PY3:
232
+ if isinstance(content, basestring):
233
+ return io.StringIO(content)
234
+ else:
235
+ return io.BytesIO(content)
236
+ else:
237
+ return io.BytesIO(content)
238
+ else:
239
+ return orig_open(name, *args, **kwargs)
240
+
241
+ orig_open = open
242
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
243
+ with mock.patch(patch_point, create=True, side_effect=open_mock) as m:
244
+ yield m
245
+
246
+
247
+ @contextlib.contextmanager
248
+ def mock_open_exception(for_path, exc):
249
+ """Mock open() builtin and raises `exc` if the path being opened
250
+ matches `for_path`.
251
+ """
252
+
253
+ def open_mock(name, *args, **kwargs):
254
+ if name == for_path:
255
+ raise exc
256
+ else:
257
+ return orig_open(name, *args, **kwargs)
258
+
259
+ orig_open = open
260
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
261
+ with mock.patch(patch_point, create=True, side_effect=open_mock) as m:
262
+ yield m
263
+
264
+
265
+ # =====================================================================
266
+ # --- system virtual memory
267
+ # =====================================================================
268
+
269
+
270
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
271
+ class TestSystemVirtualMemoryAgainstFree(PsutilTestCase):
272
+ def test_total(self):
273
+ cli_value = free_physmem().total
274
+ psutil_value = psutil.virtual_memory().total
275
+ assert cli_value == psutil_value
276
+
277
+ @retry_on_failure()
278
+ def test_used(self):
279
+ # Older versions of procps used slab memory to calculate used memory.
280
+ # This got changed in:
281
+ # https://gitlab.com/procps-ng/procps/commit/
282
+ # 05d751c4f076a2f0118b914c5e51cfbb4762ad8e
283
+ # Newer versions of procps are using yet another way to compute used
284
+ # memory.
285
+ # https://gitlab.com/procps-ng/procps/commit/
286
+ # 2184e90d2e7cdb582f9a5b706b47015e56707e4d
287
+ if get_free_version_info() < (3, 3, 12):
288
+ raise pytest.skip("free version too old")
289
+ if get_free_version_info() >= (4, 0, 0):
290
+ raise pytest.skip("free version too recent")
291
+ cli_value = free_physmem().used
292
+ psutil_value = psutil.virtual_memory().used
293
+ assert abs(cli_value - psutil_value) < TOLERANCE_SYS_MEM
294
+
295
+ @retry_on_failure()
296
+ def test_free(self):
297
+ cli_value = free_physmem().free
298
+ psutil_value = psutil.virtual_memory().free
299
+ assert abs(cli_value - psutil_value) < TOLERANCE_SYS_MEM
300
+
301
+ @retry_on_failure()
302
+ def test_shared(self):
303
+ free = free_physmem()
304
+ free_value = free.shared
305
+ if free_value == 0:
306
+ raise pytest.skip("free does not support 'shared' column")
307
+ psutil_value = psutil.virtual_memory().shared
308
+ assert (
309
+ abs(free_value - psutil_value) < TOLERANCE_SYS_MEM
310
+ ), '%s %s \n%s' % (free_value, psutil_value, free.output)
311
+
312
+ @retry_on_failure()
313
+ def test_available(self):
314
+ # "free" output format has changed at some point:
315
+ # https://github.com/giampaolo/psutil/issues/538#issuecomment-147192098
316
+ out = sh(["free", "-b"])
317
+ lines = out.split('\n')
318
+ if 'available' not in lines[0]:
319
+ raise pytest.skip("free does not support 'available' column")
320
+ else:
321
+ free_value = int(lines[1].split()[-1])
322
+ psutil_value = psutil.virtual_memory().available
323
+ assert (
324
+ abs(free_value - psutil_value) < TOLERANCE_SYS_MEM
325
+ ), '%s %s \n%s' % (free_value, psutil_value, out)
326
+
327
+
328
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
329
+ class TestSystemVirtualMemoryAgainstVmstat(PsutilTestCase):
330
+ def test_total(self):
331
+ vmstat_value = vmstat('total memory') * 1024
332
+ psutil_value = psutil.virtual_memory().total
333
+ assert abs(vmstat_value - psutil_value) < TOLERANCE_SYS_MEM
334
+
335
+ @retry_on_failure()
336
+ def test_used(self):
337
+ # Older versions of procps used slab memory to calculate used memory.
338
+ # This got changed in:
339
+ # https://gitlab.com/procps-ng/procps/commit/
340
+ # 05d751c4f076a2f0118b914c5e51cfbb4762ad8e
341
+ # Newer versions of procps are using yet another way to compute used
342
+ # memory.
343
+ # https://gitlab.com/procps-ng/procps/commit/
344
+ # 2184e90d2e7cdb582f9a5b706b47015e56707e4d
345
+ if get_free_version_info() < (3, 3, 12):
346
+ raise pytest.skip("free version too old")
347
+ if get_free_version_info() >= (4, 0, 0):
348
+ raise pytest.skip("free version too recent")
349
+ vmstat_value = vmstat('used memory') * 1024
350
+ psutil_value = psutil.virtual_memory().used
351
+ assert abs(vmstat_value - psutil_value) < TOLERANCE_SYS_MEM
352
+
353
+ @retry_on_failure()
354
+ def test_free(self):
355
+ vmstat_value = vmstat('free memory') * 1024
356
+ psutil_value = psutil.virtual_memory().free
357
+ assert abs(vmstat_value - psutil_value) < TOLERANCE_SYS_MEM
358
+
359
+ @retry_on_failure()
360
+ def test_buffers(self):
361
+ vmstat_value = vmstat('buffer memory') * 1024
362
+ psutil_value = psutil.virtual_memory().buffers
363
+ assert abs(vmstat_value - psutil_value) < TOLERANCE_SYS_MEM
364
+
365
+ @retry_on_failure()
366
+ def test_active(self):
367
+ vmstat_value = vmstat('active memory') * 1024
368
+ psutil_value = psutil.virtual_memory().active
369
+ assert abs(vmstat_value - psutil_value) < TOLERANCE_SYS_MEM
370
+
371
+ @retry_on_failure()
372
+ def test_inactive(self):
373
+ vmstat_value = vmstat('inactive memory') * 1024
374
+ psutil_value = psutil.virtual_memory().inactive
375
+ assert abs(vmstat_value - psutil_value) < TOLERANCE_SYS_MEM
376
+
377
+
378
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
379
+ class TestSystemVirtualMemoryMocks(PsutilTestCase):
380
+ def test_warnings_on_misses(self):
381
+ # Emulate a case where /proc/meminfo provides few info.
382
+ # psutil is supposed to set the missing fields to 0 and
383
+ # raise a warning.
384
+ content = textwrap.dedent("""\
385
+ Active(anon): 6145416 kB
386
+ Active(file): 2950064 kB
387
+ Inactive(anon): 574764 kB
388
+ Inactive(file): 1567648 kB
389
+ MemAvailable: -1 kB
390
+ MemFree: 2057400 kB
391
+ MemTotal: 16325648 kB
392
+ SReclaimable: 346648 kB
393
+ """).encode()
394
+ with mock_open_content({'/proc/meminfo': content}) as m:
395
+ with warnings.catch_warnings(record=True) as ws:
396
+ warnings.simplefilter("always")
397
+ ret = psutil.virtual_memory()
398
+ assert m.called
399
+ assert len(ws) == 1
400
+ w = ws[0]
401
+ assert "memory stats couldn't be determined" in str(w.message)
402
+ assert "cached" in str(w.message)
403
+ assert "shared" in str(w.message)
404
+ assert "active" in str(w.message)
405
+ assert "inactive" in str(w.message)
406
+ assert "buffers" in str(w.message)
407
+ assert "available" in str(w.message)
408
+ assert ret.cached == 0
409
+ assert ret.active == 0
410
+ assert ret.inactive == 0
411
+ assert ret.shared == 0
412
+ assert ret.buffers == 0
413
+ assert ret.available == 0
414
+ assert ret.slab == 0
415
+
416
+ @retry_on_failure()
417
+ def test_avail_old_percent(self):
418
+ # Make sure that our calculation of avail mem for old kernels
419
+ # is off by max 15%.
420
+ mems = {}
421
+ with open_binary('/proc/meminfo') as f:
422
+ for line in f:
423
+ fields = line.split()
424
+ mems[fields[0]] = int(fields[1]) * 1024
425
+
426
+ a = calculate_avail_vmem(mems)
427
+ if b'MemAvailable:' in mems:
428
+ b = mems[b'MemAvailable:']
429
+ diff_percent = abs(a - b) / a * 100
430
+ assert diff_percent < 15
431
+
432
+ def test_avail_old_comes_from_kernel(self):
433
+ # Make sure "MemAvailable:" coluimn is used instead of relying
434
+ # on our internal algorithm to calculate avail mem.
435
+ content = textwrap.dedent("""\
436
+ Active: 9444728 kB
437
+ Active(anon): 6145416 kB
438
+ Active(file): 2950064 kB
439
+ Buffers: 287952 kB
440
+ Cached: 4818144 kB
441
+ Inactive(file): 1578132 kB
442
+ Inactive(anon): 574764 kB
443
+ Inactive(file): 1567648 kB
444
+ MemAvailable: 6574984 kB
445
+ MemFree: 2057400 kB
446
+ MemTotal: 16325648 kB
447
+ Shmem: 577588 kB
448
+ SReclaimable: 346648 kB
449
+ """).encode()
450
+ with mock_open_content({'/proc/meminfo': content}) as m:
451
+ with warnings.catch_warnings(record=True) as ws:
452
+ ret = psutil.virtual_memory()
453
+ assert m.called
454
+ assert ret.available == 6574984 * 1024
455
+ w = ws[0]
456
+ assert "inactive memory stats couldn't be determined" in str(
457
+ w.message
458
+ )
459
+
460
+ def test_avail_old_missing_fields(self):
461
+ # Remove Active(file), Inactive(file) and SReclaimable
462
+ # from /proc/meminfo and make sure the fallback is used
463
+ # (free + cached),
464
+ content = textwrap.dedent("""\
465
+ Active: 9444728 kB
466
+ Active(anon): 6145416 kB
467
+ Buffers: 287952 kB
468
+ Cached: 4818144 kB
469
+ Inactive(file): 1578132 kB
470
+ Inactive(anon): 574764 kB
471
+ MemFree: 2057400 kB
472
+ MemTotal: 16325648 kB
473
+ Shmem: 577588 kB
474
+ """).encode()
475
+ with mock_open_content({"/proc/meminfo": content}) as m:
476
+ with warnings.catch_warnings(record=True) as ws:
477
+ ret = psutil.virtual_memory()
478
+ assert m.called
479
+ assert ret.available == 2057400 * 1024 + 4818144 * 1024
480
+ w = ws[0]
481
+ assert "inactive memory stats couldn't be determined" in str(
482
+ w.message
483
+ )
484
+
485
+ def test_avail_old_missing_zoneinfo(self):
486
+ # Remove /proc/zoneinfo file. Make sure fallback is used
487
+ # (free + cached).
488
+ content = textwrap.dedent("""\
489
+ Active: 9444728 kB
490
+ Active(anon): 6145416 kB
491
+ Active(file): 2950064 kB
492
+ Buffers: 287952 kB
493
+ Cached: 4818144 kB
494
+ Inactive(file): 1578132 kB
495
+ Inactive(anon): 574764 kB
496
+ Inactive(file): 1567648 kB
497
+ MemFree: 2057400 kB
498
+ MemTotal: 16325648 kB
499
+ Shmem: 577588 kB
500
+ SReclaimable: 346648 kB
501
+ """).encode()
502
+ with mock_open_content({"/proc/meminfo": content}):
503
+ with mock_open_exception(
504
+ "/proc/zoneinfo",
505
+ IOError(errno.ENOENT, 'no such file or directory'),
506
+ ):
507
+ with warnings.catch_warnings(record=True) as ws:
508
+ ret = psutil.virtual_memory()
509
+ assert ret.available == 2057400 * 1024 + 4818144 * 1024
510
+ w = ws[0]
511
+ assert (
512
+ "inactive memory stats couldn't be determined"
513
+ in str(w.message)
514
+ )
515
+
516
+ def test_virtual_memory_mocked(self):
517
+ # Emulate /proc/meminfo because neither vmstat nor free return slab.
518
+ content = textwrap.dedent("""\
519
+ MemTotal: 100 kB
520
+ MemFree: 2 kB
521
+ MemAvailable: 3 kB
522
+ Buffers: 4 kB
523
+ Cached: 5 kB
524
+ SwapCached: 6 kB
525
+ Active: 7 kB
526
+ Inactive: 8 kB
527
+ Active(anon): 9 kB
528
+ Inactive(anon): 10 kB
529
+ Active(file): 11 kB
530
+ Inactive(file): 12 kB
531
+ Unevictable: 13 kB
532
+ Mlocked: 14 kB
533
+ SwapTotal: 15 kB
534
+ SwapFree: 16 kB
535
+ Dirty: 17 kB
536
+ Writeback: 18 kB
537
+ AnonPages: 19 kB
538
+ Mapped: 20 kB
539
+ Shmem: 21 kB
540
+ Slab: 22 kB
541
+ SReclaimable: 23 kB
542
+ SUnreclaim: 24 kB
543
+ KernelStack: 25 kB
544
+ PageTables: 26 kB
545
+ NFS_Unstable: 27 kB
546
+ Bounce: 28 kB
547
+ WritebackTmp: 29 kB
548
+ CommitLimit: 30 kB
549
+ Committed_AS: 31 kB
550
+ VmallocTotal: 32 kB
551
+ VmallocUsed: 33 kB
552
+ VmallocChunk: 34 kB
553
+ HardwareCorrupted: 35 kB
554
+ AnonHugePages: 36 kB
555
+ ShmemHugePages: 37 kB
556
+ ShmemPmdMapped: 38 kB
557
+ CmaTotal: 39 kB
558
+ CmaFree: 40 kB
559
+ HugePages_Total: 41 kB
560
+ HugePages_Free: 42 kB
561
+ HugePages_Rsvd: 43 kB
562
+ HugePages_Surp: 44 kB
563
+ Hugepagesize: 45 kB
564
+ DirectMap46k: 46 kB
565
+ DirectMap47M: 47 kB
566
+ DirectMap48G: 48 kB
567
+ """).encode()
568
+ with mock_open_content({"/proc/meminfo": content}) as m:
569
+ mem = psutil.virtual_memory()
570
+ assert m.called
571
+ assert mem.total == 100 * 1024
572
+ assert mem.free == 2 * 1024
573
+ assert mem.buffers == 4 * 1024
574
+ # cached mem also includes reclaimable memory
575
+ assert mem.cached == (5 + 23) * 1024
576
+ assert mem.shared == 21 * 1024
577
+ assert mem.active == 7 * 1024
578
+ assert mem.inactive == 8 * 1024
579
+ assert mem.slab == 22 * 1024
580
+ assert mem.available == 3 * 1024
581
+
582
+
583
+ # =====================================================================
584
+ # --- system swap memory
585
+ # =====================================================================
586
+
587
+
588
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
589
+ class TestSystemSwapMemory(PsutilTestCase):
590
+ @staticmethod
591
+ def meminfo_has_swap_info():
592
+ """Return True if /proc/meminfo provides swap metrics."""
593
+ with open("/proc/meminfo") as f:
594
+ data = f.read()
595
+ return 'SwapTotal:' in data and 'SwapFree:' in data
596
+
597
+ def test_total(self):
598
+ free_value = free_swap().total
599
+ psutil_value = psutil.swap_memory().total
600
+ assert abs(free_value - psutil_value) < TOLERANCE_SYS_MEM
601
+
602
+ @retry_on_failure()
603
+ def test_used(self):
604
+ free_value = free_swap().used
605
+ psutil_value = psutil.swap_memory().used
606
+ assert abs(free_value - psutil_value) < TOLERANCE_SYS_MEM
607
+
608
+ @retry_on_failure()
609
+ def test_free(self):
610
+ free_value = free_swap().free
611
+ psutil_value = psutil.swap_memory().free
612
+ assert abs(free_value - psutil_value) < TOLERANCE_SYS_MEM
613
+
614
+ def test_missing_sin_sout(self):
615
+ with mock.patch('psutil._common.open', create=True) as m:
616
+ with warnings.catch_warnings(record=True) as ws:
617
+ warnings.simplefilter("always")
618
+ ret = psutil.swap_memory()
619
+ assert m.called
620
+ assert len(ws) == 1
621
+ w = ws[0]
622
+ assert (
623
+ "'sin' and 'sout' swap memory stats couldn't be determined"
624
+ in str(w.message)
625
+ )
626
+ assert ret.sin == 0
627
+ assert ret.sout == 0
628
+
629
+ def test_no_vmstat_mocked(self):
630
+ # see https://github.com/giampaolo/psutil/issues/722
631
+ with mock_open_exception(
632
+ "/proc/vmstat", IOError(errno.ENOENT, 'no such file or directory')
633
+ ) as m:
634
+ with warnings.catch_warnings(record=True) as ws:
635
+ warnings.simplefilter("always")
636
+ ret = psutil.swap_memory()
637
+ assert m.called
638
+ assert len(ws) == 1
639
+ w = ws[0]
640
+ assert (
641
+ "'sin' and 'sout' swap memory stats couldn't "
642
+ "be determined and were set to 0"
643
+ in str(w.message)
644
+ )
645
+ assert ret.sin == 0
646
+ assert ret.sout == 0
647
+
648
+ def test_meminfo_against_sysinfo(self):
649
+ # Make sure the content of /proc/meminfo about swap memory
650
+ # matches sysinfo() syscall, see:
651
+ # https://github.com/giampaolo/psutil/issues/1015
652
+ if not self.meminfo_has_swap_info():
653
+ raise pytest.skip("/proc/meminfo has no swap metrics")
654
+ with mock.patch('psutil._pslinux.cext.linux_sysinfo') as m:
655
+ swap = psutil.swap_memory()
656
+ assert not m.called
657
+ import psutil._psutil_linux as cext
658
+
659
+ _, _, _, _, total, free, unit_multiplier = cext.linux_sysinfo()
660
+ total *= unit_multiplier
661
+ free *= unit_multiplier
662
+ assert swap.total == total
663
+ assert abs(swap.free - free) < TOLERANCE_SYS_MEM
664
+
665
+ def test_emulate_meminfo_has_no_metrics(self):
666
+ # Emulate a case where /proc/meminfo provides no swap metrics
667
+ # in which case sysinfo() syscall is supposed to be used
668
+ # as a fallback.
669
+ with mock_open_content({"/proc/meminfo": b""}) as m:
670
+ psutil.swap_memory()
671
+ assert m.called
672
+
673
+
674
+ # =====================================================================
675
+ # --- system CPU
676
+ # =====================================================================
677
+
678
+
679
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
680
+ class TestSystemCPUTimes(PsutilTestCase):
681
+ def test_fields(self):
682
+ fields = psutil.cpu_times()._fields
683
+ kernel_ver = re.findall(r'\d+\.\d+\.\d+', os.uname()[2])[0]
684
+ kernel_ver_info = tuple(map(int, kernel_ver.split('.')))
685
+ if kernel_ver_info >= (2, 6, 11):
686
+ assert 'steal' in fields
687
+ else:
688
+ assert 'steal' not in fields
689
+ if kernel_ver_info >= (2, 6, 24):
690
+ assert 'guest' in fields
691
+ else:
692
+ assert 'guest' not in fields
693
+ if kernel_ver_info >= (3, 2, 0):
694
+ assert 'guest_nice' in fields
695
+ else:
696
+ assert 'guest_nice' not in fields
697
+
698
+
699
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
700
+ class TestSystemCPUCountLogical(PsutilTestCase):
701
+ @pytest.mark.skipif(
702
+ not os.path.exists("/sys/devices/system/cpu/online"),
703
+ reason="/sys/devices/system/cpu/online does not exist",
704
+ )
705
+ def test_against_sysdev_cpu_online(self):
706
+ with open("/sys/devices/system/cpu/online") as f:
707
+ value = f.read().strip()
708
+ if "-" in str(value):
709
+ value = int(value.split('-')[1]) + 1
710
+ assert psutil.cpu_count() == value
711
+
712
+ @pytest.mark.skipif(
713
+ not os.path.exists("/sys/devices/system/cpu"),
714
+ reason="/sys/devices/system/cpu does not exist",
715
+ )
716
+ def test_against_sysdev_cpu_num(self):
717
+ ls = os.listdir("/sys/devices/system/cpu")
718
+ count = len([x for x in ls if re.search(r"cpu\d+$", x) is not None])
719
+ assert psutil.cpu_count() == count
720
+
721
+ @pytest.mark.skipif(
722
+ not which("nproc"), reason="nproc utility not available"
723
+ )
724
+ def test_against_nproc(self):
725
+ num = int(sh("nproc --all"))
726
+ assert psutil.cpu_count(logical=True) == num
727
+
728
+ @pytest.mark.skipif(
729
+ not which("lscpu"), reason="lscpu utility not available"
730
+ )
731
+ def test_against_lscpu(self):
732
+ out = sh("lscpu -p")
733
+ num = len([x for x in out.split('\n') if not x.startswith('#')])
734
+ assert psutil.cpu_count(logical=True) == num
735
+
736
+ def test_emulate_fallbacks(self):
737
+ import psutil._pslinux
738
+
739
+ original = psutil._pslinux.cpu_count_logical()
740
+ # Here we want to mock os.sysconf("SC_NPROCESSORS_ONLN") in
741
+ # order to cause the parsing of /proc/cpuinfo and /proc/stat.
742
+ with mock.patch(
743
+ 'psutil._pslinux.os.sysconf', side_effect=ValueError
744
+ ) as m:
745
+ assert psutil._pslinux.cpu_count_logical() == original
746
+ assert m.called
747
+
748
+ # Let's have open() return empty data and make sure None is
749
+ # returned ('cause we mimic os.cpu_count()).
750
+ with mock.patch('psutil._common.open', create=True) as m:
751
+ assert psutil._pslinux.cpu_count_logical() is None
752
+ assert m.call_count == 2
753
+ # /proc/stat should be the last one
754
+ assert m.call_args[0][0] == '/proc/stat'
755
+
756
+ # Let's push this a bit further and make sure /proc/cpuinfo
757
+ # parsing works as expected.
758
+ with open('/proc/cpuinfo', 'rb') as f:
759
+ cpuinfo_data = f.read()
760
+ fake_file = io.BytesIO(cpuinfo_data)
761
+ with mock.patch(
762
+ 'psutil._common.open', return_value=fake_file, create=True
763
+ ) as m:
764
+ assert psutil._pslinux.cpu_count_logical() == original
765
+
766
+ # Finally, let's make /proc/cpuinfo return meaningless data;
767
+ # this way we'll fall back on relying on /proc/stat
768
+ with mock_open_content({"/proc/cpuinfo": b""}) as m:
769
+ assert psutil._pslinux.cpu_count_logical() == original
770
+ assert m.called
771
+
772
+
773
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
774
+ class TestSystemCPUCountCores(PsutilTestCase):
775
+ @pytest.mark.skipif(
776
+ not which("lscpu"), reason="lscpu utility not available"
777
+ )
778
+ def test_against_lscpu(self):
779
+ out = sh("lscpu -p")
780
+ core_ids = set()
781
+ for line in out.split('\n'):
782
+ if not line.startswith('#'):
783
+ fields = line.split(',')
784
+ core_ids.add(fields[1])
785
+ assert psutil.cpu_count(logical=False) == len(core_ids)
786
+
787
+ def test_method_2(self):
788
+ meth_1 = psutil._pslinux.cpu_count_cores()
789
+ with mock.patch('glob.glob', return_value=[]) as m:
790
+ meth_2 = psutil._pslinux.cpu_count_cores()
791
+ assert m.called
792
+ if meth_1 is not None:
793
+ assert meth_1 == meth_2
794
+
795
+ def test_emulate_none(self):
796
+ with mock.patch('glob.glob', return_value=[]) as m1:
797
+ with mock.patch('psutil._common.open', create=True) as m2:
798
+ assert psutil._pslinux.cpu_count_cores() is None
799
+ assert m1.called
800
+ assert m2.called
801
+
802
+
803
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
804
+ class TestSystemCPUFrequency(PsutilTestCase):
805
+ @pytest.mark.skipif(not HAS_CPU_FREQ, reason="not supported")
806
+ def test_emulate_use_second_file(self):
807
+ # https://github.com/giampaolo/psutil/issues/981
808
+ def path_exists_mock(path):
809
+ if path.startswith("/sys/devices/system/cpu/cpufreq/policy"):
810
+ return False
811
+ else:
812
+ return orig_exists(path)
813
+
814
+ orig_exists = os.path.exists
815
+ with mock.patch(
816
+ "os.path.exists", side_effect=path_exists_mock, create=True
817
+ ):
818
+ assert psutil.cpu_freq()
819
+
820
+ @pytest.mark.skipif(not HAS_CPU_FREQ, reason="not supported")
821
+ @pytest.mark.skipif(
822
+ AARCH64, reason="aarch64 does not report mhz in /proc/cpuinfo"
823
+ )
824
+ def test_emulate_use_cpuinfo(self):
825
+ # Emulate a case where /sys/devices/system/cpu/cpufreq* does not
826
+ # exist and /proc/cpuinfo is used instead.
827
+ def path_exists_mock(path):
828
+ if path.startswith('/sys/devices/system/cpu/'):
829
+ return False
830
+ else:
831
+ return os_path_exists(path)
832
+
833
+ os_path_exists = os.path.exists
834
+ try:
835
+ with mock.patch("os.path.exists", side_effect=path_exists_mock):
836
+ reload_module(psutil._pslinux)
837
+ ret = psutil.cpu_freq()
838
+ assert ret, ret
839
+ assert ret.max == 0.0
840
+ assert ret.min == 0.0
841
+ for freq in psutil.cpu_freq(percpu=True):
842
+ assert freq.max == 0.0
843
+ assert freq.min == 0.0
844
+ finally:
845
+ reload_module(psutil._pslinux)
846
+ reload_module(psutil)
847
+
848
+ @pytest.mark.skipif(not HAS_CPU_FREQ, reason="not supported")
849
+ def test_emulate_data(self):
850
+ def open_mock(name, *args, **kwargs):
851
+ if name.endswith('/scaling_cur_freq') and name.startswith(
852
+ "/sys/devices/system/cpu/cpufreq/policy"
853
+ ):
854
+ return io.BytesIO(b"500000")
855
+ elif name.endswith('/scaling_min_freq') and name.startswith(
856
+ "/sys/devices/system/cpu/cpufreq/policy"
857
+ ):
858
+ return io.BytesIO(b"600000")
859
+ elif name.endswith('/scaling_max_freq') and name.startswith(
860
+ "/sys/devices/system/cpu/cpufreq/policy"
861
+ ):
862
+ return io.BytesIO(b"700000")
863
+ elif name == '/proc/cpuinfo':
864
+ return io.BytesIO(b"cpu MHz : 500")
865
+ else:
866
+ return orig_open(name, *args, **kwargs)
867
+
868
+ orig_open = open
869
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
870
+ with mock.patch(patch_point, side_effect=open_mock):
871
+ with mock.patch('os.path.exists', return_value=True):
872
+ freq = psutil.cpu_freq()
873
+ assert freq.current == 500.0
874
+ # when /proc/cpuinfo is used min and max frequencies are not
875
+ # available and are set to 0.
876
+ if freq.min != 0.0:
877
+ assert freq.min == 600.0
878
+ if freq.max != 0.0:
879
+ assert freq.max == 700.0
880
+
881
+ @pytest.mark.skipif(not HAS_CPU_FREQ, reason="not supported")
882
+ def test_emulate_multi_cpu(self):
883
+ def open_mock(name, *args, **kwargs):
884
+ n = name
885
+ if n.endswith('/scaling_cur_freq') and n.startswith(
886
+ "/sys/devices/system/cpu/cpufreq/policy0"
887
+ ):
888
+ return io.BytesIO(b"100000")
889
+ elif n.endswith('/scaling_min_freq') and n.startswith(
890
+ "/sys/devices/system/cpu/cpufreq/policy0"
891
+ ):
892
+ return io.BytesIO(b"200000")
893
+ elif n.endswith('/scaling_max_freq') and n.startswith(
894
+ "/sys/devices/system/cpu/cpufreq/policy0"
895
+ ):
896
+ return io.BytesIO(b"300000")
897
+ elif n.endswith('/scaling_cur_freq') and n.startswith(
898
+ "/sys/devices/system/cpu/cpufreq/policy1"
899
+ ):
900
+ return io.BytesIO(b"400000")
901
+ elif n.endswith('/scaling_min_freq') and n.startswith(
902
+ "/sys/devices/system/cpu/cpufreq/policy1"
903
+ ):
904
+ return io.BytesIO(b"500000")
905
+ elif n.endswith('/scaling_max_freq') and n.startswith(
906
+ "/sys/devices/system/cpu/cpufreq/policy1"
907
+ ):
908
+ return io.BytesIO(b"600000")
909
+ elif name == '/proc/cpuinfo':
910
+ return io.BytesIO(b"cpu MHz : 100\ncpu MHz : 400")
911
+ else:
912
+ return orig_open(name, *args, **kwargs)
913
+
914
+ orig_open = open
915
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
916
+ with mock.patch(patch_point, side_effect=open_mock):
917
+ with mock.patch('os.path.exists', return_value=True):
918
+ with mock.patch(
919
+ 'psutil._pslinux.cpu_count_logical', return_value=2
920
+ ):
921
+ freq = psutil.cpu_freq(percpu=True)
922
+ assert freq[0].current == 100.0
923
+ if freq[0].min != 0.0:
924
+ assert freq[0].min == 200.0
925
+ if freq[0].max != 0.0:
926
+ assert freq[0].max == 300.0
927
+ assert freq[1].current == 400.0
928
+ if freq[1].min != 0.0:
929
+ assert freq[1].min == 500.0
930
+ if freq[1].max != 0.0:
931
+ assert freq[1].max == 600.0
932
+
933
+ @pytest.mark.skipif(not HAS_CPU_FREQ, reason="not supported")
934
+ def test_emulate_no_scaling_cur_freq_file(self):
935
+ # See: https://github.com/giampaolo/psutil/issues/1071
936
+ def open_mock(name, *args, **kwargs):
937
+ if name.endswith('/scaling_cur_freq'):
938
+ raise IOError(errno.ENOENT, "")
939
+ elif name.endswith('/cpuinfo_cur_freq'):
940
+ return io.BytesIO(b"200000")
941
+ elif name == '/proc/cpuinfo':
942
+ return io.BytesIO(b"cpu MHz : 200")
943
+ else:
944
+ return orig_open(name, *args, **kwargs)
945
+
946
+ orig_open = open
947
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
948
+ with mock.patch(patch_point, side_effect=open_mock):
949
+ with mock.patch('os.path.exists', return_value=True):
950
+ with mock.patch(
951
+ 'psutil._pslinux.cpu_count_logical', return_value=1
952
+ ):
953
+ freq = psutil.cpu_freq()
954
+ assert freq.current == 200
955
+
956
+
957
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
958
+ class TestSystemCPUStats(PsutilTestCase):
959
+
960
+ # XXX: fails too often.
961
+ # def test_ctx_switches(self):
962
+ # vmstat_value = vmstat("context switches")
963
+ # psutil_value = psutil.cpu_stats().ctx_switches
964
+ # self.assertAlmostEqual(vmstat_value, psutil_value, delta=500)
965
+
966
+ def test_interrupts(self):
967
+ vmstat_value = vmstat("interrupts")
968
+ psutil_value = psutil.cpu_stats().interrupts
969
+ assert abs(vmstat_value - psutil_value) < 500
970
+
971
+
972
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
973
+ class TestLoadAvg(PsutilTestCase):
974
+ @pytest.mark.skipif(not HAS_GETLOADAVG, reason="not supported")
975
+ def test_getloadavg(self):
976
+ psutil_value = psutil.getloadavg()
977
+ with open("/proc/loadavg") as f:
978
+ proc_value = f.read().split()
979
+
980
+ assert abs(float(proc_value[0]) - psutil_value[0]) < 1
981
+ assert abs(float(proc_value[1]) - psutil_value[1]) < 1
982
+ assert abs(float(proc_value[2]) - psutil_value[2]) < 1
983
+
984
+
985
+ # =====================================================================
986
+ # --- system network
987
+ # =====================================================================
988
+
989
+
990
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
991
+ class TestSystemNetIfAddrs(PsutilTestCase):
992
+ def test_ips(self):
993
+ for name, addrs in psutil.net_if_addrs().items():
994
+ for addr in addrs:
995
+ if addr.family == psutil.AF_LINK:
996
+ assert addr.address == get_mac_address(name)
997
+ elif addr.family == socket.AF_INET:
998
+ assert addr.address == get_ipv4_address(name)
999
+ assert addr.netmask == get_ipv4_netmask(name)
1000
+ if addr.broadcast is not None:
1001
+ assert addr.broadcast == get_ipv4_broadcast(name)
1002
+ else:
1003
+ assert get_ipv4_broadcast(name) == '0.0.0.0'
1004
+ elif addr.family == socket.AF_INET6:
1005
+ # IPv6 addresses can have a percent symbol at the end.
1006
+ # E.g. these 2 are equivalent:
1007
+ # "fe80::1ff:fe23:4567:890a"
1008
+ # "fe80::1ff:fe23:4567:890a%eth0"
1009
+ # That is the "zone id" portion, which usually is the name
1010
+ # of the network interface.
1011
+ address = addr.address.split('%')[0]
1012
+ assert address in get_ipv6_addresses(name)
1013
+
1014
+ # XXX - not reliable when having virtual NICs installed by Docker.
1015
+ # @pytest.mark.skipif(not which('ip'), reason="'ip' utility not available")
1016
+ # def test_net_if_names(self):
1017
+ # out = sh("ip addr").strip()
1018
+ # nics = [x for x in psutil.net_if_addrs().keys() if ':' not in x]
1019
+ # found = 0
1020
+ # for line in out.split('\n'):
1021
+ # line = line.strip()
1022
+ # if re.search(r"^\d+:", line):
1023
+ # found += 1
1024
+ # name = line.split(':')[1].strip()
1025
+ # self.assertIn(name, nics)
1026
+ # self.assertEqual(len(nics), found, msg="%s\n---\n%s" % (
1027
+ # pprint.pformat(nics), out))
1028
+
1029
+
1030
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1031
+ @pytest.mark.skipif(QEMU_USER, reason="QEMU user not supported")
1032
+ class TestSystemNetIfStats(PsutilTestCase):
1033
+ @pytest.mark.skipif(
1034
+ not which("ifconfig"), reason="ifconfig utility not available"
1035
+ )
1036
+ def test_against_ifconfig(self):
1037
+ for name, stats in psutil.net_if_stats().items():
1038
+ try:
1039
+ out = sh("ifconfig %s" % name)
1040
+ except RuntimeError:
1041
+ pass
1042
+ else:
1043
+ assert stats.isup == ('RUNNING' in out), out
1044
+ assert stats.mtu == int(
1045
+ re.findall(r'(?i)MTU[: ](\d+)', out)[0]
1046
+ )
1047
+
1048
+ def test_mtu(self):
1049
+ for name, stats in psutil.net_if_stats().items():
1050
+ with open("/sys/class/net/%s/mtu" % name) as f:
1051
+ assert stats.mtu == int(f.read().strip())
1052
+
1053
+ @pytest.mark.skipif(
1054
+ not which("ifconfig"), reason="ifconfig utility not available"
1055
+ )
1056
+ def test_flags(self):
1057
+ # first line looks like this:
1058
+ # "eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500"
1059
+ matches_found = 0
1060
+ for name, stats in psutil.net_if_stats().items():
1061
+ try:
1062
+ out = sh("ifconfig %s" % name)
1063
+ except RuntimeError:
1064
+ pass
1065
+ else:
1066
+ match = re.search(r"flags=(\d+)?<(.*?)>", out)
1067
+ if match and len(match.groups()) >= 2:
1068
+ matches_found += 1
1069
+ ifconfig_flags = set(match.group(2).lower().split(","))
1070
+ psutil_flags = set(stats.flags.split(","))
1071
+ assert ifconfig_flags == psutil_flags
1072
+ else:
1073
+ # ifconfig has a different output on CentOS 6
1074
+ # let's try that
1075
+ match = re.search(r"(.*) MTU:(\d+) Metric:(\d+)", out)
1076
+ if match and len(match.groups()) >= 3:
1077
+ matches_found += 1
1078
+ ifconfig_flags = set(match.group(1).lower().split())
1079
+ psutil_flags = set(stats.flags.split(","))
1080
+ assert ifconfig_flags == psutil_flags
1081
+
1082
+ if not matches_found:
1083
+ raise self.fail("no matches were found")
1084
+
1085
+
1086
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1087
+ class TestSystemNetIOCounters(PsutilTestCase):
1088
+ @pytest.mark.skipif(
1089
+ not which("ifconfig"), reason="ifconfig utility not available"
1090
+ )
1091
+ @retry_on_failure()
1092
+ def test_against_ifconfig(self):
1093
+ def ifconfig(nic):
1094
+ ret = {}
1095
+ out = sh("ifconfig %s" % nic)
1096
+ ret['packets_recv'] = int(
1097
+ re.findall(r'RX packets[: ](\d+)', out)[0]
1098
+ )
1099
+ ret['packets_sent'] = int(
1100
+ re.findall(r'TX packets[: ](\d+)', out)[0]
1101
+ )
1102
+ ret['errin'] = int(re.findall(r'errors[: ](\d+)', out)[0])
1103
+ ret['errout'] = int(re.findall(r'errors[: ](\d+)', out)[1])
1104
+ ret['dropin'] = int(re.findall(r'dropped[: ](\d+)', out)[0])
1105
+ ret['dropout'] = int(re.findall(r'dropped[: ](\d+)', out)[1])
1106
+ ret['bytes_recv'] = int(
1107
+ re.findall(r'RX (?:packets \d+ +)?bytes[: ](\d+)', out)[0]
1108
+ )
1109
+ ret['bytes_sent'] = int(
1110
+ re.findall(r'TX (?:packets \d+ +)?bytes[: ](\d+)', out)[0]
1111
+ )
1112
+ return ret
1113
+
1114
+ nio = psutil.net_io_counters(pernic=True, nowrap=False)
1115
+ for name, stats in nio.items():
1116
+ try:
1117
+ ifconfig_ret = ifconfig(name)
1118
+ except RuntimeError:
1119
+ continue
1120
+ assert (
1121
+ abs(stats.bytes_recv - ifconfig_ret['bytes_recv']) < 1024 * 10
1122
+ )
1123
+ assert (
1124
+ abs(stats.bytes_sent - ifconfig_ret['bytes_sent']) < 1024 * 10
1125
+ )
1126
+ assert (
1127
+ abs(stats.packets_recv - ifconfig_ret['packets_recv']) < 1024
1128
+ )
1129
+ assert (
1130
+ abs(stats.packets_sent - ifconfig_ret['packets_sent']) < 1024
1131
+ )
1132
+ assert abs(stats.errin - ifconfig_ret['errin']) < 10
1133
+ assert abs(stats.errout - ifconfig_ret['errout']) < 10
1134
+ assert abs(stats.dropin - ifconfig_ret['dropin']) < 10
1135
+ assert abs(stats.dropout - ifconfig_ret['dropout']) < 10
1136
+
1137
+
1138
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1139
+ class TestSystemNetConnections(PsutilTestCase):
1140
+ @mock.patch('psutil._pslinux.socket.inet_ntop', side_effect=ValueError)
1141
+ @mock.patch('psutil._pslinux.supports_ipv6', return_value=False)
1142
+ def test_emulate_ipv6_unsupported(self, supports_ipv6, inet_ntop):
1143
+ # see: https://github.com/giampaolo/psutil/issues/623
1144
+ try:
1145
+ s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
1146
+ self.addCleanup(s.close)
1147
+ s.bind(("::1", 0))
1148
+ except socket.error:
1149
+ pass
1150
+ psutil.net_connections(kind='inet6')
1151
+
1152
+ def test_emulate_unix(self):
1153
+ content = textwrap.dedent("""\
1154
+ 0: 00000003 000 000 0001 03 462170 @/tmp/dbus-Qw2hMPIU3n
1155
+ 0: 00000003 000 000 0001 03 35010 @/tmp/dbus-tB2X8h69BQ
1156
+ 0: 00000003 000 000 0001 03 34424 @/tmp/dbus-cHy80Y8O
1157
+ 000000000000000000000000000000000000000000000000000000
1158
+ """)
1159
+ with mock_open_content({"/proc/net/unix": content}) as m:
1160
+ psutil.net_connections(kind='unix')
1161
+ assert m.called
1162
+
1163
+
1164
+ # =====================================================================
1165
+ # --- system disks
1166
+ # =====================================================================
1167
+
1168
+
1169
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1170
+ class TestSystemDiskPartitions(PsutilTestCase):
1171
+ @pytest.mark.skipif(
1172
+ not hasattr(os, 'statvfs'), reason="os.statvfs() not available"
1173
+ )
1174
+ @skip_on_not_implemented()
1175
+ def test_against_df(self):
1176
+ # test psutil.disk_usage() and psutil.disk_partitions()
1177
+ # against "df -a"
1178
+ def df(path):
1179
+ out = sh('df -P -B 1 "%s"' % path).strip()
1180
+ lines = out.split('\n')
1181
+ lines.pop(0)
1182
+ line = lines.pop(0)
1183
+ dev, total, used, free = line.split()[:4]
1184
+ if dev == 'none':
1185
+ dev = ''
1186
+ total, used, free = int(total), int(used), int(free)
1187
+ return dev, total, used, free
1188
+
1189
+ for part in psutil.disk_partitions(all=False):
1190
+ usage = psutil.disk_usage(part.mountpoint)
1191
+ _, total, used, free = df(part.mountpoint)
1192
+ assert usage.total == total
1193
+ assert abs(usage.free - free) < TOLERANCE_DISK_USAGE
1194
+ assert abs(usage.used - used) < TOLERANCE_DISK_USAGE
1195
+
1196
+ def test_zfs_fs(self):
1197
+ # Test that ZFS partitions are returned.
1198
+ with open("/proc/filesystems") as f:
1199
+ data = f.read()
1200
+ if 'zfs' in data:
1201
+ for part in psutil.disk_partitions():
1202
+ if part.fstype == 'zfs':
1203
+ break
1204
+ else:
1205
+ raise self.fail("couldn't find any ZFS partition")
1206
+ else:
1207
+ # No ZFS partitions on this system. Let's fake one.
1208
+ fake_file = io.StringIO(u"nodev\tzfs\n")
1209
+ with mock.patch(
1210
+ 'psutil._common.open', return_value=fake_file, create=True
1211
+ ) as m1:
1212
+ with mock.patch(
1213
+ 'psutil._pslinux.cext.disk_partitions',
1214
+ return_value=[('/dev/sdb3', '/', 'zfs', 'rw')],
1215
+ ) as m2:
1216
+ ret = psutil.disk_partitions()
1217
+ assert m1.called
1218
+ assert m2.called
1219
+ assert ret
1220
+ assert ret[0].fstype == 'zfs'
1221
+
1222
+ def test_emulate_realpath_fail(self):
1223
+ # See: https://github.com/giampaolo/psutil/issues/1307
1224
+ try:
1225
+ with mock.patch(
1226
+ 'os.path.realpath', return_value='/non/existent'
1227
+ ) as m:
1228
+ with pytest.raises(FileNotFoundError):
1229
+ psutil.disk_partitions()
1230
+ assert m.called
1231
+ finally:
1232
+ psutil.PROCFS_PATH = "/proc"
1233
+
1234
+
1235
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1236
+ class TestSystemDiskIoCounters(PsutilTestCase):
1237
+ def test_emulate_kernel_2_4(self):
1238
+ # Tests /proc/diskstats parsing format for 2.4 kernels, see:
1239
+ # https://github.com/giampaolo/psutil/issues/767
1240
+ content = " 3 0 1 hda 2 3 4 5 6 7 8 9 10 11 12"
1241
+ with mock_open_content({'/proc/diskstats': content}):
1242
+ with mock.patch(
1243
+ 'psutil._pslinux.is_storage_device', return_value=True
1244
+ ):
1245
+ ret = psutil.disk_io_counters(nowrap=False)
1246
+ assert ret.read_count == 1
1247
+ assert ret.read_merged_count == 2
1248
+ assert ret.read_bytes == 3 * SECTOR_SIZE
1249
+ assert ret.read_time == 4
1250
+ assert ret.write_count == 5
1251
+ assert ret.write_merged_count == 6
1252
+ assert ret.write_bytes == 7 * SECTOR_SIZE
1253
+ assert ret.write_time == 8
1254
+ assert ret.busy_time == 10
1255
+
1256
+ def test_emulate_kernel_2_6_full(self):
1257
+ # Tests /proc/diskstats parsing format for 2.6 kernels,
1258
+ # lines reporting all metrics:
1259
+ # https://github.com/giampaolo/psutil/issues/767
1260
+ content = " 3 0 hda 1 2 3 4 5 6 7 8 9 10 11"
1261
+ with mock_open_content({"/proc/diskstats": content}):
1262
+ with mock.patch(
1263
+ 'psutil._pslinux.is_storage_device', return_value=True
1264
+ ):
1265
+ ret = psutil.disk_io_counters(nowrap=False)
1266
+ assert ret.read_count == 1
1267
+ assert ret.read_merged_count == 2
1268
+ assert ret.read_bytes == 3 * SECTOR_SIZE
1269
+ assert ret.read_time == 4
1270
+ assert ret.write_count == 5
1271
+ assert ret.write_merged_count == 6
1272
+ assert ret.write_bytes == 7 * SECTOR_SIZE
1273
+ assert ret.write_time == 8
1274
+ assert ret.busy_time == 10
1275
+
1276
+ def test_emulate_kernel_2_6_limited(self):
1277
+ # Tests /proc/diskstats parsing format for 2.6 kernels,
1278
+ # where one line of /proc/partitions return a limited
1279
+ # amount of metrics when it bumps into a partition
1280
+ # (instead of a disk). See:
1281
+ # https://github.com/giampaolo/psutil/issues/767
1282
+ with mock_open_content({"/proc/diskstats": " 3 1 hda 1 2 3 4"}):
1283
+ with mock.patch(
1284
+ 'psutil._pslinux.is_storage_device', return_value=True
1285
+ ):
1286
+ ret = psutil.disk_io_counters(nowrap=False)
1287
+ assert ret.read_count == 1
1288
+ assert ret.read_bytes == 2 * SECTOR_SIZE
1289
+ assert ret.write_count == 3
1290
+ assert ret.write_bytes == 4 * SECTOR_SIZE
1291
+
1292
+ assert ret.read_merged_count == 0
1293
+ assert ret.read_time == 0
1294
+ assert ret.write_merged_count == 0
1295
+ assert ret.write_time == 0
1296
+ assert ret.busy_time == 0
1297
+
1298
+ def test_emulate_include_partitions(self):
1299
+ # Make sure that when perdisk=True disk partitions are returned,
1300
+ # see:
1301
+ # https://github.com/giampaolo/psutil/pull/1313#issuecomment-408626842
1302
+ content = textwrap.dedent("""\
1303
+ 3 0 nvme0n1 1 2 3 4 5 6 7 8 9 10 11
1304
+ 3 0 nvme0n1p1 1 2 3 4 5 6 7 8 9 10 11
1305
+ """)
1306
+ with mock_open_content({"/proc/diskstats": content}):
1307
+ with mock.patch(
1308
+ 'psutil._pslinux.is_storage_device', return_value=False
1309
+ ):
1310
+ ret = psutil.disk_io_counters(perdisk=True, nowrap=False)
1311
+ assert len(ret) == 2
1312
+ assert ret['nvme0n1'].read_count == 1
1313
+ assert ret['nvme0n1p1'].read_count == 1
1314
+ assert ret['nvme0n1'].write_count == 5
1315
+ assert ret['nvme0n1p1'].write_count == 5
1316
+
1317
+ def test_emulate_exclude_partitions(self):
1318
+ # Make sure that when perdisk=False partitions (e.g. 'sda1',
1319
+ # 'nvme0n1p1') are skipped and not included in the total count.
1320
+ # https://github.com/giampaolo/psutil/pull/1313#issuecomment-408626842
1321
+ content = textwrap.dedent("""\
1322
+ 3 0 nvme0n1 1 2 3 4 5 6 7 8 9 10 11
1323
+ 3 0 nvme0n1p1 1 2 3 4 5 6 7 8 9 10 11
1324
+ """)
1325
+ with mock_open_content({"/proc/diskstats": content}):
1326
+ with mock.patch(
1327
+ 'psutil._pslinux.is_storage_device', return_value=False
1328
+ ):
1329
+ ret = psutil.disk_io_counters(perdisk=False, nowrap=False)
1330
+ assert ret is None
1331
+
1332
+ def is_storage_device(name):
1333
+ return name == 'nvme0n1'
1334
+
1335
+ content = textwrap.dedent("""\
1336
+ 3 0 nvme0n1 1 2 3 4 5 6 7 8 9 10 11
1337
+ 3 0 nvme0n1p1 1 2 3 4 5 6 7 8 9 10 11
1338
+ """)
1339
+ with mock_open_content({"/proc/diskstats": content}):
1340
+ with mock.patch(
1341
+ 'psutil._pslinux.is_storage_device',
1342
+ create=True,
1343
+ side_effect=is_storage_device,
1344
+ ):
1345
+ ret = psutil.disk_io_counters(perdisk=False, nowrap=False)
1346
+ assert ret.read_count == 1
1347
+ assert ret.write_count == 5
1348
+
1349
+ def test_emulate_use_sysfs(self):
1350
+ def exists(path):
1351
+ return path == '/proc/diskstats'
1352
+
1353
+ wprocfs = psutil.disk_io_counters(perdisk=True)
1354
+ with mock.patch(
1355
+ 'psutil._pslinux.os.path.exists', create=True, side_effect=exists
1356
+ ):
1357
+ wsysfs = psutil.disk_io_counters(perdisk=True)
1358
+ assert len(wprocfs) == len(wsysfs)
1359
+
1360
+ def test_emulate_not_impl(self):
1361
+ def exists(path):
1362
+ return False
1363
+
1364
+ with mock.patch(
1365
+ 'psutil._pslinux.os.path.exists', create=True, side_effect=exists
1366
+ ):
1367
+ with pytest.raises(NotImplementedError):
1368
+ psutil.disk_io_counters()
1369
+
1370
+
1371
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1372
+ class TestRootFsDeviceFinder(PsutilTestCase):
1373
+ def setUp(self):
1374
+ dev = os.stat("/").st_dev
1375
+ self.major = os.major(dev)
1376
+ self.minor = os.minor(dev)
1377
+
1378
+ def test_call_methods(self):
1379
+ finder = RootFsDeviceFinder()
1380
+ if os.path.exists("/proc/partitions"):
1381
+ finder.ask_proc_partitions()
1382
+ else:
1383
+ with pytest.raises(FileNotFoundError):
1384
+ finder.ask_proc_partitions()
1385
+ if os.path.exists(
1386
+ "/sys/dev/block/%s:%s/uevent" % (self.major, self.minor)
1387
+ ):
1388
+ finder.ask_sys_dev_block()
1389
+ else:
1390
+ with pytest.raises(FileNotFoundError):
1391
+ finder.ask_sys_dev_block()
1392
+ finder.ask_sys_class_block()
1393
+
1394
+ @pytest.mark.skipif(GITHUB_ACTIONS, reason="unsupported on GITHUB_ACTIONS")
1395
+ def test_comparisons(self):
1396
+ finder = RootFsDeviceFinder()
1397
+ assert finder.find() is not None
1398
+
1399
+ a = b = c = None
1400
+ if os.path.exists("/proc/partitions"):
1401
+ a = finder.ask_proc_partitions()
1402
+ if os.path.exists(
1403
+ "/sys/dev/block/%s:%s/uevent" % (self.major, self.minor)
1404
+ ):
1405
+ b = finder.ask_sys_class_block()
1406
+ c = finder.ask_sys_dev_block()
1407
+
1408
+ base = a or b or c
1409
+ if base and a:
1410
+ assert base == a
1411
+ if base and b:
1412
+ assert base == b
1413
+ if base and c:
1414
+ assert base == c
1415
+
1416
+ @pytest.mark.skipif(
1417
+ not which("findmnt"), reason="findmnt utility not available"
1418
+ )
1419
+ @pytest.mark.skipif(GITHUB_ACTIONS, reason="unsupported on GITHUB_ACTIONS")
1420
+ def test_against_findmnt(self):
1421
+ psutil_value = RootFsDeviceFinder().find()
1422
+ findmnt_value = sh("findmnt -o SOURCE -rn /")
1423
+ assert psutil_value == findmnt_value
1424
+
1425
+ def test_disk_partitions_mocked(self):
1426
+ with mock.patch(
1427
+ 'psutil._pslinux.cext.disk_partitions',
1428
+ return_value=[('/dev/root', '/', 'ext4', 'rw')],
1429
+ ) as m:
1430
+ part = psutil.disk_partitions()[0]
1431
+ assert m.called
1432
+ if not GITHUB_ACTIONS:
1433
+ assert part.device != "/dev/root"
1434
+ assert part.device == RootFsDeviceFinder().find()
1435
+ else:
1436
+ assert part.device == "/dev/root"
1437
+
1438
+
1439
+ # =====================================================================
1440
+ # --- misc
1441
+ # =====================================================================
1442
+
1443
+
1444
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1445
+ class TestMisc(PsutilTestCase):
1446
+ def test_boot_time(self):
1447
+ vmstat_value = vmstat('boot time')
1448
+ psutil_value = psutil.boot_time()
1449
+ assert int(vmstat_value) == int(psutil_value)
1450
+
1451
+ def test_no_procfs_on_import(self):
1452
+ my_procfs = self.get_testfn()
1453
+ os.mkdir(my_procfs)
1454
+
1455
+ with open(os.path.join(my_procfs, 'stat'), 'w') as f:
1456
+ f.write('cpu 0 0 0 0 0 0 0 0 0 0\n')
1457
+ f.write('cpu0 0 0 0 0 0 0 0 0 0 0\n')
1458
+ f.write('cpu1 0 0 0 0 0 0 0 0 0 0\n')
1459
+
1460
+ try:
1461
+ orig_open = open
1462
+
1463
+ def open_mock(name, *args, **kwargs):
1464
+ if name.startswith('/proc'):
1465
+ raise IOError(errno.ENOENT, 'rejecting access for test')
1466
+ return orig_open(name, *args, **kwargs)
1467
+
1468
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1469
+ with mock.patch(patch_point, side_effect=open_mock):
1470
+ reload_module(psutil)
1471
+
1472
+ with pytest.raises(IOError):
1473
+ psutil.cpu_times()
1474
+ with pytest.raises(IOError):
1475
+ psutil.cpu_times(percpu=True)
1476
+ with pytest.raises(IOError):
1477
+ psutil.cpu_percent()
1478
+ with pytest.raises(IOError):
1479
+ psutil.cpu_percent(percpu=True)
1480
+ with pytest.raises(IOError):
1481
+ psutil.cpu_times_percent()
1482
+ with pytest.raises(IOError):
1483
+ psutil.cpu_times_percent(percpu=True)
1484
+
1485
+ psutil.PROCFS_PATH = my_procfs
1486
+
1487
+ assert psutil.cpu_percent() == 0
1488
+ assert sum(psutil.cpu_times_percent()) == 0
1489
+
1490
+ # since we don't know the number of CPUs at import time,
1491
+ # we awkwardly say there are none until the second call
1492
+ per_cpu_percent = psutil.cpu_percent(percpu=True)
1493
+ assert sum(per_cpu_percent) == 0
1494
+
1495
+ # ditto awkward length
1496
+ per_cpu_times_percent = psutil.cpu_times_percent(percpu=True)
1497
+ assert sum(map(sum, per_cpu_times_percent)) == 0
1498
+
1499
+ # much user, very busy
1500
+ with open(os.path.join(my_procfs, 'stat'), 'w') as f:
1501
+ f.write('cpu 1 0 0 0 0 0 0 0 0 0\n')
1502
+ f.write('cpu0 1 0 0 0 0 0 0 0 0 0\n')
1503
+ f.write('cpu1 1 0 0 0 0 0 0 0 0 0\n')
1504
+
1505
+ assert psutil.cpu_percent() != 0
1506
+ assert sum(psutil.cpu_percent(percpu=True)) != 0
1507
+ assert sum(psutil.cpu_times_percent()) != 0
1508
+ assert (
1509
+ sum(map(sum, psutil.cpu_times_percent(percpu=True))) != 0
1510
+ )
1511
+ finally:
1512
+ shutil.rmtree(my_procfs)
1513
+ reload_module(psutil)
1514
+
1515
+ assert psutil.PROCFS_PATH == '/proc'
1516
+
1517
+ def test_cpu_steal_decrease(self):
1518
+ # Test cumulative cpu stats decrease. We should ignore this.
1519
+ # See issue #1210.
1520
+ content = textwrap.dedent("""\
1521
+ cpu 0 0 0 0 0 0 0 1 0 0
1522
+ cpu0 0 0 0 0 0 0 0 1 0 0
1523
+ cpu1 0 0 0 0 0 0 0 1 0 0
1524
+ """).encode()
1525
+ with mock_open_content({"/proc/stat": content}) as m:
1526
+ # first call to "percent" functions should read the new stat file
1527
+ # and compare to the "real" file read at import time - so the
1528
+ # values are meaningless
1529
+ psutil.cpu_percent()
1530
+ assert m.called
1531
+ psutil.cpu_percent(percpu=True)
1532
+ psutil.cpu_times_percent()
1533
+ psutil.cpu_times_percent(percpu=True)
1534
+
1535
+ content = textwrap.dedent("""\
1536
+ cpu 1 0 0 0 0 0 0 0 0 0
1537
+ cpu0 1 0 0 0 0 0 0 0 0 0
1538
+ cpu1 1 0 0 0 0 0 0 0 0 0
1539
+ """).encode()
1540
+ with mock_open_content({"/proc/stat": content}):
1541
+ # Increase "user" while steal goes "backwards" to zero.
1542
+ cpu_percent = psutil.cpu_percent()
1543
+ assert m.called
1544
+ cpu_percent_percpu = psutil.cpu_percent(percpu=True)
1545
+ cpu_times_percent = psutil.cpu_times_percent()
1546
+ cpu_times_percent_percpu = psutil.cpu_times_percent(percpu=True)
1547
+ assert cpu_percent != 0
1548
+ assert sum(cpu_percent_percpu) != 0
1549
+ assert sum(cpu_times_percent) != 0
1550
+ assert sum(cpu_times_percent) != 100.0
1551
+ assert sum(map(sum, cpu_times_percent_percpu)) != 0
1552
+ assert sum(map(sum, cpu_times_percent_percpu)) != 100.0
1553
+ assert cpu_times_percent.steal == 0
1554
+ assert cpu_times_percent.user != 0
1555
+
1556
+ def test_boot_time_mocked(self):
1557
+ with mock.patch('psutil._common.open', create=True) as m:
1558
+ with pytest.raises(RuntimeError):
1559
+ psutil._pslinux.boot_time()
1560
+ assert m.called
1561
+
1562
+ def test_users(self):
1563
+ # Make sure the C extension converts ':0' and ':0.0' to
1564
+ # 'localhost'.
1565
+ for user in psutil.users():
1566
+ assert user.host not in (":0", ":0.0")
1567
+
1568
+ def test_procfs_path(self):
1569
+ tdir = self.get_testfn()
1570
+ os.mkdir(tdir)
1571
+ try:
1572
+ psutil.PROCFS_PATH = tdir
1573
+ with pytest.raises(IOError):
1574
+ psutil.virtual_memory()
1575
+ with pytest.raises(IOError):
1576
+ psutil.cpu_times()
1577
+ with pytest.raises(IOError):
1578
+ psutil.cpu_times(percpu=True)
1579
+ with pytest.raises(IOError):
1580
+ psutil.boot_time()
1581
+ # self.assertRaises(IOError, psutil.pids)
1582
+ with pytest.raises(IOError):
1583
+ psutil.net_connections()
1584
+ with pytest.raises(IOError):
1585
+ psutil.net_io_counters()
1586
+ with pytest.raises(IOError):
1587
+ psutil.net_if_stats()
1588
+ # self.assertRaises(IOError, psutil.disk_io_counters)
1589
+ with pytest.raises(IOError):
1590
+ psutil.disk_partitions()
1591
+ with pytest.raises(psutil.NoSuchProcess):
1592
+ psutil.Process()
1593
+ finally:
1594
+ psutil.PROCFS_PATH = "/proc"
1595
+
1596
+ @retry_on_failure()
1597
+ @pytest.mark.skipif(PYTEST_PARALLEL, reason="skip if pytest-parallel")
1598
+ def test_issue_687(self):
1599
+ # In case of thread ID:
1600
+ # - pid_exists() is supposed to return False
1601
+ # - Process(tid) is supposed to work
1602
+ # - pids() should not return the TID
1603
+ # See: https://github.com/giampaolo/psutil/issues/687
1604
+ with ThreadTask():
1605
+ p = psutil.Process()
1606
+ threads = p.threads()
1607
+ assert len(threads) == (3 if QEMU_USER else 2)
1608
+ tid = sorted(threads, key=lambda x: x.id)[1].id
1609
+ assert p.pid != tid
1610
+ pt = psutil.Process(tid)
1611
+ pt.as_dict()
1612
+ assert tid not in psutil.pids()
1613
+
1614
+ def test_pid_exists_no_proc_status(self):
1615
+ # Internally pid_exists relies on /proc/{pid}/status.
1616
+ # Emulate a case where this file is empty in which case
1617
+ # psutil is supposed to fall back on using pids().
1618
+ with mock_open_content({"/proc/%s/status": ""}) as m:
1619
+ assert psutil.pid_exists(os.getpid())
1620
+ assert m.called
1621
+
1622
+
1623
+ # =====================================================================
1624
+ # --- sensors
1625
+ # =====================================================================
1626
+
1627
+
1628
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1629
+ @pytest.mark.skipif(not HAS_BATTERY, reason="no battery")
1630
+ class TestSensorsBattery(PsutilTestCase):
1631
+ @pytest.mark.skipif(not which("acpi"), reason="acpi utility not available")
1632
+ def test_percent(self):
1633
+ out = sh("acpi -b")
1634
+ acpi_value = int(out.split(",")[1].strip().replace('%', ''))
1635
+ psutil_value = psutil.sensors_battery().percent
1636
+ assert abs(acpi_value - psutil_value) < 1
1637
+
1638
+ def test_emulate_power_plugged(self):
1639
+ # Pretend the AC power cable is connected.
1640
+ def open_mock(name, *args, **kwargs):
1641
+ if name.endswith(('AC0/online', 'AC/online')):
1642
+ return io.BytesIO(b"1")
1643
+ else:
1644
+ return orig_open(name, *args, **kwargs)
1645
+
1646
+ orig_open = open
1647
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1648
+ with mock.patch(patch_point, side_effect=open_mock) as m:
1649
+ assert psutil.sensors_battery().power_plugged is True
1650
+ assert (
1651
+ psutil.sensors_battery().secsleft
1652
+ == psutil.POWER_TIME_UNLIMITED
1653
+ )
1654
+ assert m.called
1655
+
1656
+ def test_emulate_power_plugged_2(self):
1657
+ # Same as above but pretend /AC0/online does not exist in which
1658
+ # case code relies on /status file.
1659
+ def open_mock(name, *args, **kwargs):
1660
+ if name.endswith(('AC0/online', 'AC/online')):
1661
+ raise IOError(errno.ENOENT, "")
1662
+ elif name.endswith("/status"):
1663
+ return io.StringIO(u"charging")
1664
+ else:
1665
+ return orig_open(name, *args, **kwargs)
1666
+
1667
+ orig_open = open
1668
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1669
+ with mock.patch(patch_point, side_effect=open_mock) as m:
1670
+ assert psutil.sensors_battery().power_plugged is True
1671
+ assert m.called
1672
+
1673
+ def test_emulate_power_not_plugged(self):
1674
+ # Pretend the AC power cable is not connected.
1675
+ def open_mock(name, *args, **kwargs):
1676
+ if name.endswith(('AC0/online', 'AC/online')):
1677
+ return io.BytesIO(b"0")
1678
+ else:
1679
+ return orig_open(name, *args, **kwargs)
1680
+
1681
+ orig_open = open
1682
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1683
+ with mock.patch(patch_point, side_effect=open_mock) as m:
1684
+ assert psutil.sensors_battery().power_plugged is False
1685
+ assert m.called
1686
+
1687
+ def test_emulate_power_not_plugged_2(self):
1688
+ # Same as above but pretend /AC0/online does not exist in which
1689
+ # case code relies on /status file.
1690
+ def open_mock(name, *args, **kwargs):
1691
+ if name.endswith(('AC0/online', 'AC/online')):
1692
+ raise IOError(errno.ENOENT, "")
1693
+ elif name.endswith("/status"):
1694
+ return io.StringIO(u"discharging")
1695
+ else:
1696
+ return orig_open(name, *args, **kwargs)
1697
+
1698
+ orig_open = open
1699
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1700
+ with mock.patch(patch_point, side_effect=open_mock) as m:
1701
+ assert psutil.sensors_battery().power_plugged is False
1702
+ assert m.called
1703
+
1704
+ def test_emulate_power_undetermined(self):
1705
+ # Pretend we can't know whether the AC power cable not
1706
+ # connected (assert fallback to False).
1707
+ def open_mock(name, *args, **kwargs):
1708
+ if name.startswith((
1709
+ '/sys/class/power_supply/AC0/online',
1710
+ '/sys/class/power_supply/AC/online',
1711
+ )):
1712
+ raise IOError(errno.ENOENT, "")
1713
+ elif name.startswith("/sys/class/power_supply/BAT0/status"):
1714
+ return io.BytesIO(b"???")
1715
+ else:
1716
+ return orig_open(name, *args, **kwargs)
1717
+
1718
+ orig_open = open
1719
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1720
+ with mock.patch(patch_point, side_effect=open_mock) as m:
1721
+ assert psutil.sensors_battery().power_plugged is None
1722
+ assert m.called
1723
+
1724
+ def test_emulate_energy_full_0(self):
1725
+ # Emulate a case where energy_full files returns 0.
1726
+ with mock_open_content(
1727
+ {"/sys/class/power_supply/BAT0/energy_full": b"0"}
1728
+ ) as m:
1729
+ assert psutil.sensors_battery().percent == 0
1730
+ assert m.called
1731
+
1732
+ def test_emulate_energy_full_not_avail(self):
1733
+ # Emulate a case where energy_full file does not exist.
1734
+ # Expected fallback on /capacity.
1735
+ with mock_open_exception(
1736
+ "/sys/class/power_supply/BAT0/energy_full",
1737
+ IOError(errno.ENOENT, ""),
1738
+ ):
1739
+ with mock_open_exception(
1740
+ "/sys/class/power_supply/BAT0/charge_full",
1741
+ IOError(errno.ENOENT, ""),
1742
+ ):
1743
+ with mock_open_content(
1744
+ {"/sys/class/power_supply/BAT0/capacity": b"88"}
1745
+ ):
1746
+ assert psutil.sensors_battery().percent == 88
1747
+
1748
+ def test_emulate_no_power(self):
1749
+ # Emulate a case where /AC0/online file nor /BAT0/status exist.
1750
+ with mock_open_exception(
1751
+ "/sys/class/power_supply/AC/online", IOError(errno.ENOENT, "")
1752
+ ):
1753
+ with mock_open_exception(
1754
+ "/sys/class/power_supply/AC0/online", IOError(errno.ENOENT, "")
1755
+ ):
1756
+ with mock_open_exception(
1757
+ "/sys/class/power_supply/BAT0/status",
1758
+ IOError(errno.ENOENT, ""),
1759
+ ):
1760
+ assert psutil.sensors_battery().power_plugged is None
1761
+
1762
+
1763
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1764
+ class TestSensorsBatteryEmulated(PsutilTestCase):
1765
+ def test_it(self):
1766
+ def open_mock(name, *args, **kwargs):
1767
+ if name.endswith("/energy_now"):
1768
+ return io.StringIO(u"60000000")
1769
+ elif name.endswith("/power_now"):
1770
+ return io.StringIO(u"0")
1771
+ elif name.endswith("/energy_full"):
1772
+ return io.StringIO(u"60000001")
1773
+ else:
1774
+ return orig_open(name, *args, **kwargs)
1775
+
1776
+ orig_open = open
1777
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1778
+ with mock.patch('os.listdir', return_value=["BAT0"]) as mlistdir:
1779
+ with mock.patch(patch_point, side_effect=open_mock) as mopen:
1780
+ assert psutil.sensors_battery() is not None
1781
+ assert mlistdir.called
1782
+ assert mopen.called
1783
+
1784
+
1785
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1786
+ class TestSensorsTemperatures(PsutilTestCase):
1787
+ def test_emulate_class_hwmon(self):
1788
+ def open_mock(name, *args, **kwargs):
1789
+ if name.endswith('/name'):
1790
+ return io.StringIO(u"name")
1791
+ elif name.endswith('/temp1_label'):
1792
+ return io.StringIO(u"label")
1793
+ elif name.endswith('/temp1_input'):
1794
+ return io.BytesIO(b"30000")
1795
+ elif name.endswith('/temp1_max'):
1796
+ return io.BytesIO(b"40000")
1797
+ elif name.endswith('/temp1_crit'):
1798
+ return io.BytesIO(b"50000")
1799
+ else:
1800
+ return orig_open(name, *args, **kwargs)
1801
+
1802
+ orig_open = open
1803
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1804
+ with mock.patch(patch_point, side_effect=open_mock):
1805
+ # Test case with /sys/class/hwmon
1806
+ with mock.patch(
1807
+ 'glob.glob', return_value=['/sys/class/hwmon/hwmon0/temp1']
1808
+ ):
1809
+ temp = psutil.sensors_temperatures()['name'][0]
1810
+ assert temp.label == 'label'
1811
+ assert temp.current == 30.0
1812
+ assert temp.high == 40.0
1813
+ assert temp.critical == 50.0
1814
+
1815
+ def test_emulate_class_thermal(self):
1816
+ def open_mock(name, *args, **kwargs):
1817
+ if name.endswith('0_temp'):
1818
+ return io.BytesIO(b"50000")
1819
+ elif name.endswith('temp'):
1820
+ return io.BytesIO(b"30000")
1821
+ elif name.endswith('0_type'):
1822
+ return io.StringIO(u"critical")
1823
+ elif name.endswith('type'):
1824
+ return io.StringIO(u"name")
1825
+ else:
1826
+ return orig_open(name, *args, **kwargs)
1827
+
1828
+ def glob_mock(path):
1829
+ if path == '/sys/class/hwmon/hwmon*/temp*_*': # noqa
1830
+ return []
1831
+ elif path == '/sys/class/hwmon/hwmon*/device/temp*_*':
1832
+ return []
1833
+ elif path == '/sys/class/thermal/thermal_zone*':
1834
+ return ['/sys/class/thermal/thermal_zone0']
1835
+ elif path == '/sys/class/thermal/thermal_zone0/trip_point*':
1836
+ return [
1837
+ '/sys/class/thermal/thermal_zone1/trip_point_0_type',
1838
+ '/sys/class/thermal/thermal_zone1/trip_point_0_temp',
1839
+ ]
1840
+ return []
1841
+
1842
+ orig_open = open
1843
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1844
+ with mock.patch(patch_point, side_effect=open_mock):
1845
+ with mock.patch('glob.glob', create=True, side_effect=glob_mock):
1846
+ temp = psutil.sensors_temperatures()['name'][0]
1847
+ assert temp.label == '' # noqa
1848
+ assert temp.current == 30.0
1849
+ assert temp.high == 50.0
1850
+ assert temp.critical == 50.0
1851
+
1852
+
1853
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1854
+ class TestSensorsFans(PsutilTestCase):
1855
+ def test_emulate_data(self):
1856
+ def open_mock(name, *args, **kwargs):
1857
+ if name.endswith('/name'):
1858
+ return io.StringIO(u"name")
1859
+ elif name.endswith('/fan1_label'):
1860
+ return io.StringIO(u"label")
1861
+ elif name.endswith('/fan1_input'):
1862
+ return io.StringIO(u"2000")
1863
+ else:
1864
+ return orig_open(name, *args, **kwargs)
1865
+
1866
+ orig_open = open
1867
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1868
+ with mock.patch(patch_point, side_effect=open_mock):
1869
+ with mock.patch(
1870
+ 'glob.glob', return_value=['/sys/class/hwmon/hwmon2/fan1']
1871
+ ):
1872
+ fan = psutil.sensors_fans()['name'][0]
1873
+ assert fan.label == 'label'
1874
+ assert fan.current == 2000
1875
+
1876
+
1877
+ # =====================================================================
1878
+ # --- test process
1879
+ # =====================================================================
1880
+
1881
+
1882
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
1883
+ class TestProcess(PsutilTestCase):
1884
+ @retry_on_failure()
1885
+ def test_parse_smaps_vs_memory_maps(self):
1886
+ sproc = self.spawn_testproc()
1887
+ uss, pss, swap = psutil._pslinux.Process(sproc.pid)._parse_smaps()
1888
+ maps = psutil.Process(sproc.pid).memory_maps(grouped=False)
1889
+ assert (
1890
+ abs(uss - sum([x.private_dirty + x.private_clean for x in maps]))
1891
+ < 4096
1892
+ )
1893
+ assert abs(pss - sum([x.pss for x in maps])) < 4096
1894
+ assert abs(swap - sum([x.swap for x in maps])) < 4096
1895
+
1896
+ def test_parse_smaps_mocked(self):
1897
+ # See: https://github.com/giampaolo/psutil/issues/1222
1898
+ content = textwrap.dedent("""\
1899
+ fffff0 r-xp 00000000 00:00 0 [vsyscall]
1900
+ Size: 1 kB
1901
+ Rss: 2 kB
1902
+ Pss: 3 kB
1903
+ Shared_Clean: 4 kB
1904
+ Shared_Dirty: 5 kB
1905
+ Private_Clean: 6 kB
1906
+ Private_Dirty: 7 kB
1907
+ Referenced: 8 kB
1908
+ Anonymous: 9 kB
1909
+ LazyFree: 10 kB
1910
+ AnonHugePages: 11 kB
1911
+ ShmemPmdMapped: 12 kB
1912
+ Shared_Hugetlb: 13 kB
1913
+ Private_Hugetlb: 14 kB
1914
+ Swap: 15 kB
1915
+ SwapPss: 16 kB
1916
+ KernelPageSize: 17 kB
1917
+ MMUPageSize: 18 kB
1918
+ Locked: 19 kB
1919
+ VmFlags: rd ex
1920
+ """).encode()
1921
+ with mock_open_content({"/proc/%s/smaps" % os.getpid(): content}) as m:
1922
+ p = psutil._pslinux.Process(os.getpid())
1923
+ uss, pss, swap = p._parse_smaps()
1924
+ assert m.called
1925
+ assert uss == (6 + 7 + 14) * 1024
1926
+ assert pss == 3 * 1024
1927
+ assert swap == 15 * 1024
1928
+
1929
+ # On PYPY file descriptors are not closed fast enough.
1930
+ @pytest.mark.skipif(PYPY, reason="unreliable on PYPY")
1931
+ def test_open_files_mode(self):
1932
+ def get_test_file(fname):
1933
+ p = psutil.Process()
1934
+ giveup_at = time.time() + GLOBAL_TIMEOUT
1935
+ while True:
1936
+ for file in p.open_files():
1937
+ if file.path == os.path.abspath(fname):
1938
+ return file
1939
+ elif time.time() > giveup_at:
1940
+ break
1941
+ raise RuntimeError("timeout looking for test file")
1942
+
1943
+ testfn = self.get_testfn()
1944
+ with open(testfn, "w"):
1945
+ assert get_test_file(testfn).mode == "w"
1946
+ with open(testfn):
1947
+ assert get_test_file(testfn).mode == "r"
1948
+ with open(testfn, "a"):
1949
+ assert get_test_file(testfn).mode == "a"
1950
+ with open(testfn, "r+"):
1951
+ assert get_test_file(testfn).mode == "r+"
1952
+ with open(testfn, "w+"):
1953
+ assert get_test_file(testfn).mode == "r+"
1954
+ with open(testfn, "a+"):
1955
+ assert get_test_file(testfn).mode == "a+"
1956
+ # note: "x" bit is not supported
1957
+ if PY3:
1958
+ safe_rmpath(testfn)
1959
+ with open(testfn, "x"):
1960
+ assert get_test_file(testfn).mode == "w"
1961
+ safe_rmpath(testfn)
1962
+ with open(testfn, "x+"):
1963
+ assert get_test_file(testfn).mode == "r+"
1964
+
1965
+ def test_open_files_file_gone(self):
1966
+ # simulates a file which gets deleted during open_files()
1967
+ # execution
1968
+ p = psutil.Process()
1969
+ files = p.open_files()
1970
+ with open(self.get_testfn(), 'w'):
1971
+ # give the kernel some time to see the new file
1972
+ call_until(lambda: len(p.open_files()) != len(files))
1973
+ with mock.patch(
1974
+ 'psutil._pslinux.os.readlink',
1975
+ side_effect=OSError(errno.ENOENT, ""),
1976
+ ) as m:
1977
+ assert p.open_files() == []
1978
+ assert m.called
1979
+ # also simulate the case where os.readlink() returns EINVAL
1980
+ # in which case psutil is supposed to 'continue'
1981
+ with mock.patch(
1982
+ 'psutil._pslinux.os.readlink',
1983
+ side_effect=OSError(errno.EINVAL, ""),
1984
+ ) as m:
1985
+ assert p.open_files() == []
1986
+ assert m.called
1987
+
1988
+ def test_open_files_fd_gone(self):
1989
+ # Simulate a case where /proc/{pid}/fdinfo/{fd} disappears
1990
+ # while iterating through fds.
1991
+ # https://travis-ci.org/giampaolo/psutil/jobs/225694530
1992
+ p = psutil.Process()
1993
+ files = p.open_files()
1994
+ with open(self.get_testfn(), 'w'):
1995
+ # give the kernel some time to see the new file
1996
+ call_until(lambda: len(p.open_files()) != len(files))
1997
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
1998
+ with mock.patch(
1999
+ patch_point, side_effect=IOError(errno.ENOENT, "")
2000
+ ) as m:
2001
+ assert p.open_files() == []
2002
+ assert m.called
2003
+
2004
+ def test_open_files_enametoolong(self):
2005
+ # Simulate a case where /proc/{pid}/fd/{fd} symlink
2006
+ # points to a file with full path longer than PATH_MAX, see:
2007
+ # https://github.com/giampaolo/psutil/issues/1940
2008
+ p = psutil.Process()
2009
+ files = p.open_files()
2010
+ with open(self.get_testfn(), 'w'):
2011
+ # give the kernel some time to see the new file
2012
+ call_until(lambda: len(p.open_files()) != len(files))
2013
+ patch_point = 'psutil._pslinux.os.readlink'
2014
+ with mock.patch(
2015
+ patch_point, side_effect=OSError(errno.ENAMETOOLONG, "")
2016
+ ) as m:
2017
+ with mock.patch("psutil._pslinux.debug"):
2018
+ assert p.open_files() == []
2019
+ assert m.called
2020
+
2021
+ # --- mocked tests
2022
+
2023
+ def test_terminal_mocked(self):
2024
+ with mock.patch(
2025
+ 'psutil._pslinux._psposix.get_terminal_map', return_value={}
2026
+ ) as m:
2027
+ assert psutil._pslinux.Process(os.getpid()).terminal() is None
2028
+ assert m.called
2029
+
2030
+ # TODO: re-enable this test.
2031
+ # def test_num_ctx_switches_mocked(self):
2032
+ # with mock.patch('psutil._common.open', create=True) as m:
2033
+ # self.assertRaises(
2034
+ # NotImplementedError,
2035
+ # psutil._pslinux.Process(os.getpid()).num_ctx_switches)
2036
+ # assert m.called
2037
+
2038
+ def test_cmdline_mocked(self):
2039
+ # see: https://github.com/giampaolo/psutil/issues/639
2040
+ p = psutil.Process()
2041
+ fake_file = io.StringIO(u'foo\x00bar\x00')
2042
+ with mock.patch(
2043
+ 'psutil._common.open', return_value=fake_file, create=True
2044
+ ) as m:
2045
+ assert p.cmdline() == ['foo', 'bar']
2046
+ assert m.called
2047
+ fake_file = io.StringIO(u'foo\x00bar\x00\x00')
2048
+ with mock.patch(
2049
+ 'psutil._common.open', return_value=fake_file, create=True
2050
+ ) as m:
2051
+ assert p.cmdline() == ['foo', 'bar', '']
2052
+ assert m.called
2053
+
2054
+ def test_cmdline_spaces_mocked(self):
2055
+ # see: https://github.com/giampaolo/psutil/issues/1179
2056
+ p = psutil.Process()
2057
+ fake_file = io.StringIO(u'foo bar ')
2058
+ with mock.patch(
2059
+ 'psutil._common.open', return_value=fake_file, create=True
2060
+ ) as m:
2061
+ assert p.cmdline() == ['foo', 'bar']
2062
+ assert m.called
2063
+ fake_file = io.StringIO(u'foo bar ')
2064
+ with mock.patch(
2065
+ 'psutil._common.open', return_value=fake_file, create=True
2066
+ ) as m:
2067
+ assert p.cmdline() == ['foo', 'bar', '']
2068
+ assert m.called
2069
+
2070
+ def test_cmdline_mixed_separators(self):
2071
+ # https://github.com/giampaolo/psutil/issues/
2072
+ # 1179#issuecomment-552984549
2073
+ p = psutil.Process()
2074
+ fake_file = io.StringIO(u'foo\x20bar\x00')
2075
+ with mock.patch(
2076
+ 'psutil._common.open', return_value=fake_file, create=True
2077
+ ) as m:
2078
+ assert p.cmdline() == ['foo', 'bar']
2079
+ assert m.called
2080
+
2081
+ def test_readlink_path_deleted_mocked(self):
2082
+ with mock.patch(
2083
+ 'psutil._pslinux.os.readlink', return_value='/home/foo (deleted)'
2084
+ ):
2085
+ assert psutil.Process().exe() == "/home/foo"
2086
+ assert psutil.Process().cwd() == "/home/foo"
2087
+
2088
+ def test_threads_mocked(self):
2089
+ # Test the case where os.listdir() returns a file (thread)
2090
+ # which no longer exists by the time we open() it (race
2091
+ # condition). threads() is supposed to ignore that instead
2092
+ # of raising NSP.
2093
+ def open_mock_1(name, *args, **kwargs):
2094
+ if name.startswith('/proc/%s/task' % os.getpid()):
2095
+ raise IOError(errno.ENOENT, "")
2096
+ else:
2097
+ return orig_open(name, *args, **kwargs)
2098
+
2099
+ orig_open = open
2100
+ patch_point = 'builtins.open' if PY3 else '__builtin__.open'
2101
+ with mock.patch(patch_point, side_effect=open_mock_1) as m:
2102
+ ret = psutil.Process().threads()
2103
+ assert m.called
2104
+ assert ret == []
2105
+
2106
+ # ...but if it bumps into something != ENOENT we want an
2107
+ # exception.
2108
+ def open_mock_2(name, *args, **kwargs):
2109
+ if name.startswith('/proc/%s/task' % os.getpid()):
2110
+ raise IOError(errno.EPERM, "")
2111
+ else:
2112
+ return orig_open(name, *args, **kwargs)
2113
+
2114
+ with mock.patch(patch_point, side_effect=open_mock_2):
2115
+ with pytest.raises(psutil.AccessDenied):
2116
+ psutil.Process().threads()
2117
+
2118
+ def test_exe_mocked(self):
2119
+ with mock.patch(
2120
+ 'psutil._pslinux.readlink', side_effect=OSError(errno.ENOENT, "")
2121
+ ) as m:
2122
+ # de-activate guessing from cmdline()
2123
+ with mock.patch(
2124
+ 'psutil._pslinux.Process.cmdline', return_value=[]
2125
+ ):
2126
+ ret = psutil.Process().exe()
2127
+ assert m.called
2128
+ assert ret == "" # noqa
2129
+
2130
+ def test_issue_1014(self):
2131
+ # Emulates a case where smaps file does not exist. In this case
2132
+ # wrap_exception decorator should not raise NoSuchProcess.
2133
+ with mock_open_exception(
2134
+ '/proc/%s/smaps' % os.getpid(), IOError(errno.ENOENT, "")
2135
+ ) as m:
2136
+ p = psutil.Process()
2137
+ with pytest.raises(FileNotFoundError):
2138
+ p.memory_maps()
2139
+ assert m.called
2140
+
2141
+ @pytest.mark.skipif(not HAS_RLIMIT, reason="not supported")
2142
+ def test_rlimit_zombie(self):
2143
+ # Emulate a case where rlimit() raises ENOSYS, which may
2144
+ # happen in case of zombie process:
2145
+ # https://travis-ci.org/giampaolo/psutil/jobs/51368273
2146
+ with mock.patch(
2147
+ "psutil._pslinux.prlimit", side_effect=OSError(errno.ENOSYS, "")
2148
+ ) as m1:
2149
+ with mock.patch(
2150
+ "psutil._pslinux.Process._is_zombie", return_value=True
2151
+ ) as m2:
2152
+ p = psutil.Process()
2153
+ p.name()
2154
+ with pytest.raises(psutil.ZombieProcess) as cm:
2155
+ p.rlimit(psutil.RLIMIT_NOFILE)
2156
+ assert m1.called
2157
+ assert m2.called
2158
+ assert cm.value.pid == p.pid
2159
+ assert cm.value.name == p.name()
2160
+
2161
+ def test_stat_file_parsing(self):
2162
+ args = [
2163
+ "0", # pid
2164
+ "(cat)", # name
2165
+ "Z", # status
2166
+ "1", # ppid
2167
+ "0", # pgrp
2168
+ "0", # session
2169
+ "0", # tty
2170
+ "0", # tpgid
2171
+ "0", # flags
2172
+ "0", # minflt
2173
+ "0", # cminflt
2174
+ "0", # majflt
2175
+ "0", # cmajflt
2176
+ "2", # utime
2177
+ "3", # stime
2178
+ "4", # cutime
2179
+ "5", # cstime
2180
+ "0", # priority
2181
+ "0", # nice
2182
+ "0", # num_threads
2183
+ "0", # itrealvalue
2184
+ "6", # starttime
2185
+ "0", # vsize
2186
+ "0", # rss
2187
+ "0", # rsslim
2188
+ "0", # startcode
2189
+ "0", # endcode
2190
+ "0", # startstack
2191
+ "0", # kstkesp
2192
+ "0", # kstkeip
2193
+ "0", # signal
2194
+ "0", # blocked
2195
+ "0", # sigignore
2196
+ "0", # sigcatch
2197
+ "0", # wchan
2198
+ "0", # nswap
2199
+ "0", # cnswap
2200
+ "0", # exit_signal
2201
+ "6", # processor
2202
+ "0", # rt priority
2203
+ "0", # policy
2204
+ "7", # delayacct_blkio_ticks
2205
+ ]
2206
+ content = " ".join(args).encode()
2207
+ with mock_open_content({"/proc/%s/stat" % os.getpid(): content}):
2208
+ p = psutil.Process()
2209
+ assert p.name() == 'cat'
2210
+ assert p.status() == psutil.STATUS_ZOMBIE
2211
+ assert p.ppid() == 1
2212
+ assert p.create_time() == 6 / CLOCK_TICKS + psutil.boot_time()
2213
+ cpu = p.cpu_times()
2214
+ assert cpu.user == 2 / CLOCK_TICKS
2215
+ assert cpu.system == 3 / CLOCK_TICKS
2216
+ assert cpu.children_user == 4 / CLOCK_TICKS
2217
+ assert cpu.children_system == 5 / CLOCK_TICKS
2218
+ assert cpu.iowait == 7 / CLOCK_TICKS
2219
+ assert p.cpu_num() == 6
2220
+
2221
+ def test_status_file_parsing(self):
2222
+ content = textwrap.dedent("""\
2223
+ Uid:\t1000\t1001\t1002\t1003
2224
+ Gid:\t1004\t1005\t1006\t1007
2225
+ Threads:\t66
2226
+ Cpus_allowed:\tf
2227
+ Cpus_allowed_list:\t0-7
2228
+ voluntary_ctxt_switches:\t12
2229
+ nonvoluntary_ctxt_switches:\t13""").encode()
2230
+ with mock_open_content({"/proc/%s/status" % os.getpid(): content}):
2231
+ p = psutil.Process()
2232
+ assert p.num_ctx_switches().voluntary == 12
2233
+ assert p.num_ctx_switches().involuntary == 13
2234
+ assert p.num_threads() == 66
2235
+ uids = p.uids()
2236
+ assert uids.real == 1000
2237
+ assert uids.effective == 1001
2238
+ assert uids.saved == 1002
2239
+ gids = p.gids()
2240
+ assert gids.real == 1004
2241
+ assert gids.effective == 1005
2242
+ assert gids.saved == 1006
2243
+ assert p._proc._get_eligible_cpus() == list(range(8))
2244
+
2245
+ def test_net_connections_enametoolong(self):
2246
+ # Simulate a case where /proc/{pid}/fd/{fd} symlink points to
2247
+ # a file with full path longer than PATH_MAX, see:
2248
+ # https://github.com/giampaolo/psutil/issues/1940
2249
+ with mock.patch(
2250
+ 'psutil._pslinux.os.readlink',
2251
+ side_effect=OSError(errno.ENAMETOOLONG, ""),
2252
+ ) as m:
2253
+ p = psutil.Process()
2254
+ with mock.patch("psutil._pslinux.debug"):
2255
+ assert p.net_connections() == []
2256
+ assert m.called
2257
+
2258
+
2259
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
2260
+ class TestProcessAgainstStatus(PsutilTestCase):
2261
+ """/proc/pid/stat and /proc/pid/status have many values in common.
2262
+ Whenever possible, psutil uses /proc/pid/stat (it's faster).
2263
+ For all those cases we check that the value found in
2264
+ /proc/pid/stat (by psutil) matches the one found in
2265
+ /proc/pid/status.
2266
+ """
2267
+
2268
+ @classmethod
2269
+ def setUpClass(cls):
2270
+ cls.proc = psutil.Process()
2271
+
2272
+ def read_status_file(self, linestart):
2273
+ with psutil._psplatform.open_text(
2274
+ '/proc/%s/status' % self.proc.pid
2275
+ ) as f:
2276
+ for line in f:
2277
+ line = line.strip()
2278
+ if line.startswith(linestart):
2279
+ value = line.partition('\t')[2]
2280
+ try:
2281
+ return int(value)
2282
+ except ValueError:
2283
+ return value
2284
+ raise ValueError("can't find %r" % linestart)
2285
+
2286
+ def test_name(self):
2287
+ value = self.read_status_file("Name:")
2288
+ assert self.proc.name() == value
2289
+
2290
+ @pytest.mark.skipif(QEMU_USER, reason="QEMU user not supported")
2291
+ def test_status(self):
2292
+ value = self.read_status_file("State:")
2293
+ value = value[value.find('(') + 1 : value.rfind(')')]
2294
+ value = value.replace(' ', '-')
2295
+ assert self.proc.status() == value
2296
+
2297
+ def test_ppid(self):
2298
+ value = self.read_status_file("PPid:")
2299
+ assert self.proc.ppid() == value
2300
+
2301
+ def test_num_threads(self):
2302
+ value = self.read_status_file("Threads:")
2303
+ assert self.proc.num_threads() == value
2304
+
2305
+ def test_uids(self):
2306
+ value = self.read_status_file("Uid:")
2307
+ value = tuple(map(int, value.split()[1:4]))
2308
+ assert self.proc.uids() == value
2309
+
2310
+ def test_gids(self):
2311
+ value = self.read_status_file("Gid:")
2312
+ value = tuple(map(int, value.split()[1:4]))
2313
+ assert self.proc.gids() == value
2314
+
2315
+ @retry_on_failure()
2316
+ def test_num_ctx_switches(self):
2317
+ value = self.read_status_file("voluntary_ctxt_switches:")
2318
+ assert self.proc.num_ctx_switches().voluntary == value
2319
+ value = self.read_status_file("nonvoluntary_ctxt_switches:")
2320
+ assert self.proc.num_ctx_switches().involuntary == value
2321
+
2322
+ def test_cpu_affinity(self):
2323
+ value = self.read_status_file("Cpus_allowed_list:")
2324
+ if '-' in str(value):
2325
+ min_, max_ = map(int, value.split('-'))
2326
+ assert self.proc.cpu_affinity() == list(range(min_, max_ + 1))
2327
+
2328
+ def test_cpu_affinity_eligible_cpus(self):
2329
+ value = self.read_status_file("Cpus_allowed_list:")
2330
+ with mock.patch("psutil._pslinux.per_cpu_times") as m:
2331
+ self.proc._proc._get_eligible_cpus()
2332
+ if '-' in str(value):
2333
+ assert not m.called
2334
+ else:
2335
+ assert m.called
2336
+
2337
+
2338
+ # =====================================================================
2339
+ # --- test utils
2340
+ # =====================================================================
2341
+
2342
+
2343
+ @pytest.mark.skipif(not LINUX, reason="LINUX only")
2344
+ class TestUtils(PsutilTestCase):
2345
+ def test_readlink(self):
2346
+ with mock.patch("os.readlink", return_value="foo (deleted)") as m:
2347
+ assert psutil._psplatform.readlink("bar") == "foo"
2348
+ assert m.called