py2docfx 0.1.9.dev1886355__py3-none-any.whl → 0.1.9.dev1897554__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- py2docfx/__main__.py +15 -90
- py2docfx/convert_prepare/constants.py +3 -0
- py2docfx/convert_prepare/environment.py +1 -1
- py2docfx/convert_prepare/generate_document.py +2 -15
- py2docfx/convert_prepare/get_source.py +5 -23
- py2docfx/convert_prepare/git.py +0 -1
- py2docfx/convert_prepare/pack.py +0 -1
- py2docfx/convert_prepare/sphinx_caller.py +23 -39
- py2docfx/convert_prepare/tests/test_environment.py +53 -0
- py2docfx/convert_prepare/tests/test_generate_document.py +2 -0
- py2docfx/convert_prepare/tests/test_sphinx_caller.py +2 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/build_meta.py +32 -8
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/bdist_wheel.py +21 -3
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/command/egg_info.py +5 -1
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/dist.py +69 -28
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +25 -0
- py2docfx/venv/basevenv/Lib/site-packages/setuptools/tests/test_dist.py +4 -4
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/__init__.py +81 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/ado_consts.py +281 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/adodbapi.py +1157 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/apibase.py +724 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_print.py +72 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/db_table_names.py +21 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_read.py +41 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/examples/xls_write.py +41 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/is64bit.py +34 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/process_connect_string.py +137 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/schema_table.py +16 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/setup.py +68 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitest.py +1599 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/adodbapitestconfig.py +184 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/dbapi20.py +885 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/is64bit.py +34 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/setuptestframework.py +97 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/test_adodbapi_dbapi20.py +195 -0
- py2docfx/venv/venv1/Lib/site-packages/adodbapi/test/tryconnection.py +30 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/__init__.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_azure_clouds.py +41 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_enum_meta.py +66 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_match_conditions.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client.py +201 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_pipeline_client_async.py +289 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/_version.py +12 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/async_paging.py +151 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/configuration.py +148 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials.py +250 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/credentials_async.py +84 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/exceptions.py +579 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/messaging.py +229 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/paging.py +125 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/__init__.py +189 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base.py +229 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_base_async.py +219 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools.py +84 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/_tools_async.py +73 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/__init__.py +76 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication.py +270 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_authentication_async.py +188 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_base.py +140 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_base_async.py +57 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_custom_hook.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_distributed_tracing.py +147 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect.py +211 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_redirect_async.py +87 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry.py +563 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_retry_async.py +215 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_sensitive_header_cleanup_policy.py +77 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_universal.py +750 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/policies/_utils.py +104 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/__init__.py +120 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_aiohttp.py +564 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base.py +863 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_async.py +169 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_base_requests_async.py +55 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_bigger_block_size_http_adapters.py +48 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_asyncio.py +297 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_basic.py +413 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/pipeline/transport/_requests_trio.py +303 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/__init__.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_async_poller.py +208 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/_poller.py +303 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/async_base_polling.py +180 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/polling/base_polling.py +857 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/__init__.py +36 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_aiohttp.py +228 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_helpers.py +421 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl.py +475 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_http_response_impl_async.py +155 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_asyncio.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_basic.py +102 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_requests_trio.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/rest/_rest_py3.py +418 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/serialization.py +125 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/settings.py +520 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/__init__.py +12 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/_abstract_span.py +311 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/common.py +108 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator.py +109 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/decorator_async.py +109 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/__init__.py +303 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/tracing/ext/opencensus_span/_version.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/__init__.py +35 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_connection_string_parser.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_messaging_shared.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared.py +420 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_pipeline_transport_rest_shared_async.py +62 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/core/utils/_utils.py +188 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/__init__.py +66 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_auth_record.py +114 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_bearer_token_provider.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_constants.py +67 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/__init__.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/app_service.py +39 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/application.py +119 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/authorization_code.py +141 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azd_cli.py +284 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_arc.py +123 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_cli.py +258 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_ml.py +80 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_pipelines.py +176 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_powershell.py +265 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/browser.py +157 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/certificate.py +182 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/chained.py +219 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/client_assertion.py +77 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/client_secret.py +53 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/cloud_shell.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/default.py +257 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/device_code.py +118 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/environment.py +183 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/imds.py +129 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/managed_identity.py +185 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/on_behalf_of.py +168 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/service_fabric.py +39 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/shared_cache.py +202 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/silent.py +224 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/user_password.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/vscode.py +216 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/workload_identity.py +97 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_enums.py +67 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_exceptions.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/__init__.py +56 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aad_client.py +77 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aad_client_base.py +420 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aadclient_certificate.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/auth_code_redirect_handler.py +62 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/client_credential_base.py +57 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/decorators.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/get_token_mixin.py +165 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/interactive.py +302 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/linux_vscode_adapter.py +100 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/macos_vscode_adapter.py +34 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/managed_identity_base.py +61 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/managed_identity_client.py +151 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/msal_client.py +145 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/msal_credentials.py +147 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/msal_managed_identity_client.py +210 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/pipeline.py +94 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/shared_token_cache.py +291 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/user_agent.py +9 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/utils.py +120 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/win_vscode_adapter.py +77 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_persistent_cache.py +116 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_version.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/__init__.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_bearer_token_provider.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/__init__.py +40 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/app_service.py +20 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/application.py +121 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/authorization_code.py +147 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azd_cli.py +232 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_arc.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_cli.py +209 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_ml.py +20 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_pipelines.py +146 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_powershell.py +186 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/certificate.py +77 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/chained.py +192 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/client_assertion.py +75 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/client_secret.py +67 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/cloud_shell.py +29 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/default.py +242 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/environment.py +153 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/imds.py +85 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/managed_identity.py +170 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/on_behalf_of.py +135 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/service_fabric.py +20 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/shared_cache.py +154 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/vscode.py +127 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/workload_identity.py +77 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/__init__.py +32 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/aad_client.py +97 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/decorators.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/get_token_mixin.py +165 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/managed_identity_base.py +68 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/managed_identity_client.py +39 -0
- py2docfx/venv/venv1/Lib/site-packages/cachetools/__init__.py +859 -0
- py2docfx/venv/venv1/Lib/site-packages/cachetools/func.py +121 -0
- py2docfx/venv/venv1/Lib/site-packages/cachetools/keys.py +62 -0
- py2docfx/venv/venv1/Lib/site-packages/certifi/__init__.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/certifi/__main__.py +12 -0
- py2docfx/venv/venv1/Lib/site-packages/certifi/core.py +114 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/__init__.py +14 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/_imp_emulation.py +83 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/_shimmed_dist_utils.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/api.py +967 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/backend_ctypes.py +1121 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/cffi_opcode.py +187 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/commontypes.py +82 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/cparser.py +1015 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/error.py +31 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/ffiplatform.py +113 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/lock.py +30 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/model.py +618 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/pkgconfig.py +121 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/recompiler.py +1598 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/setuptools_ext.py +216 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/vengine_cpy.py +1084 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/vengine_gen.py +679 -0
- py2docfx/venv/venv1/Lib/site-packages/cffi/verifier.py +306 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/__init__.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/__main__.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/api.py +668 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cd.py +395 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cli/__init__.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cli/__main__.py +320 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/constant.py +1997 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/legacy.py +65 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/md.py +628 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/models.py +359 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/utils.py +421 -0
- py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/version.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/__about__.py +17 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/exceptions.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/fernet.py +215 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/_oid.py +313 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/__init__.py +9 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/backend.py +291 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/__init__.py +3 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/__init__.py +3 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py +183 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py +121 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/__init__.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py +107 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/__init__.py +3 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_asymmetric.py +19 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_cipheralgorithm.py +58 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/_serialization.py +169 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/__init__.py +3 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dh.py +135 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.py +154 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py +403 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py +116 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py +118 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py +113 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py +260 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/types.py +111 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py +24 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py +109 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py +112 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py +27 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/aead.py +23 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py +177 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py +145 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py +268 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/cmac.py +10 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/constant_time.py +14 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/hashes.py +242 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/hmac.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/__init__.py +23 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py +124 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py +101 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py +302 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py +62 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py +80 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py +61 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/keywrap.py +177 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/padding.py +204 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/poly1305.py +11 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/__init__.py +63 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/base.py +14 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py +156 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py +336 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py +1569 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py +9 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py +92 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/utils.py +127 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/__init__.py +259 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/base.py +1226 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/certificate_transparency.py +97 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/extensions.py +2196 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/general_name.py +281 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/name.py +465 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/ocsp.py +678 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/oid.py +35 -0
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/verification.py +28 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/annotations_pb2.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/auth_pb2.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/backend_pb2.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/billing_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/client_pb2.py +93 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/config_change_pb2.py +48 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/consumer_pb2.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/context_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/control_pb2.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/distribution_pb2.py +60 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/documentation_pb2.py +48 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/endpoint_pb2.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/error_reason_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/field_behavior_pb2.py +49 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/field_info_pb2.py +51 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/http_pb2.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/httpbody_pb2.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/label_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/launch_stage_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/log_pb2.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/logging_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/metric_pb2.py +65 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/monitored_resource_pb2.py +61 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/monitoring_pb2.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/policy_pb2.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/quota_pb2.py +54 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/resource_pb2.py +51 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/routing_pb2.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/service_pb2.py +67 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/source_info_pb2.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/system_parameter_pb2.py +48 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/usage_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api/visibility_pb2.py +49 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/__init__.py +22 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/_rest_streaming_base.py +118 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/bidi.py +743 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_info.py +108 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/client_options.py +137 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/datetime_helpers.py +298 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/exceptions.py +670 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/extended_operation.py +225 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/__init__.py +19 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/_helpers.py +39 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/async_future.py +162 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/base.py +64 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/polling.py +323 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/__init__.py +29 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/client_info.py +57 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/config.py +175 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/config_async.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/method.py +253 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/method_async.py +59 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/gapic_v1/routing_header.py +87 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/general_helpers.py +16 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/grpc_helpers.py +622 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/grpc_helpers_async.py +331 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/iam.py +427 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operation.py +365 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operation_async.py +225 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/__init__.py +40 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/abstract_operations_base_client.py +370 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/abstract_operations_client.py +387 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/operations_async_client.py +364 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/operations_client.py +378 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/operations_client_config.py +60 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/operations_rest_client_async.py +345 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/pagers.py +67 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/pagers_async.py +71 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/pagers_base.py +73 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/transports/__init__.py +39 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/transports/base.py +282 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/transports/rest.py +473 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/transports/rest_asyncio.py +560 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/page_iterator.py +571 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/page_iterator_async.py +285 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/path_template.py +346 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/protobuf_helpers.py +373 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/rest_helpers.py +109 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/rest_streaming.py +66 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/rest_streaming_async.py +89 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/__init__.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_base.py +361 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming.py +263 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming_async.py +325 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary.py +301 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary_async.py +238 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry_async.py +34 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/timeout.py +284 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/universe.py +82 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +15 -0
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/version_header.py +29 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/__init__.py +53 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_cloud_sdk.py +153 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_credentials_async.py +171 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_credentials_base.py +75 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_default.py +693 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_default_async.py +282 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_exponential_backoff.py +164 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_helpers.py +273 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_jwt_async.py +164 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_oauth2client.py +167 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_refresh_worker.py +109 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/_service_account_info.py +80 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/__init__.py +25 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/credentials.py +143 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/transport/__init__.py +144 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/transport/aiohttp.py +184 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/aio/transport/sessions.py +268 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/api_key.py +76 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/app_engine.py +180 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/aws.py +861 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/__init__.py +22 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/_metadata.py +367 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/compute_engine/credentials.py +496 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/credentials.py +522 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/__init__.py +98 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/_cryptography_rsa.py +151 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/_python_rsa.py +175 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/base.py +127 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/es256.py +175 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/crypt/rsa.py +30 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/downscoped.py +512 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/environment_vars.py +84 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/exceptions.py +108 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/external_account.py +628 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/external_account_authorized_user.py +380 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/iam.py +114 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/identity_pool.py +439 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/impersonated_credentials.py +462 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/jwt.py +878 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/metrics.py +154 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/pluggable.py +429 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/__init__.py +103 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_aiohttp_requests.py +391 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_custom_tls_signer.py +283 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_http_client.py +113 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_mtls_helper.py +407 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/_requests_base.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/grpc.py +343 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/mtls.py +112 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/requests.py +600 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/transport/urllib3.py +444 -0
- py2docfx/venv/venv1/Lib/site-packages/google/auth/version.py +15 -0
- py2docfx/venv/venv1/Lib/site-packages/google/cloud/extended_operations_pb2.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/cloud/location/locations_pb2.py +71 -0
- py2docfx/venv/venv1/Lib/site-packages/google/gapic/metadata/gapic_metadata_pb2.py +62 -0
- py2docfx/venv/venv1/Lib/site-packages/google/logging/type/http_request_pb2.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/logging/type/log_severity_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_grpc.py +19 -0
- py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_grpc_pb2.py +15 -0
- py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_pb2.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_pb2_grpc.py +341 -0
- py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_proto.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/google/longrunning/operations_proto_pb2.py +95 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/__init__.py +36 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_client.py +500 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_client_async.py +286 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_credentials_async.py +118 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_id_token_async.py +285 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_reauth_async.py +328 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/_service_account_async.py +132 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/challenges.py +281 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/credentials.py +614 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/gdch_credentials.py +251 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/id_token.py +340 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/reauth.py +369 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/service_account.py +846 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/sts.py +176 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/utils.py +168 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/webauthn_handler.py +82 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/webauthn_handler_factory.py +16 -0
- py2docfx/venv/venv1/Lib/site-packages/google/oauth2/webauthn_types.py +156 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/__init__.py +10 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/any_pb2.py +37 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/api_pb2.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/compiler/plugin_pb2.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor.py +1511 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_database.py +154 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pb2.py +3169 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/descriptor_pool.py +1355 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/duration_pb2.py +37 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/empty_pb2.py +37 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/field_mask_pb2.py +37 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/__init__.py +7 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/_parameterized.py +420 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/api_implementation.py +142 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/builder.py +117 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/containers.py +677 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/decoder.py +1036 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/encoder.py +806 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/enum_type_wrapper.py +112 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/extension_dict.py +194 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/field_mask.py +310 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/message_listener.py +55 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_edition_defaults.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/python_message.py +1580 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/testing_refleaks.py +119 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/type_checkers.py +408 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/well_known_types.py +678 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/internal/wire_format.py +245 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/json_format.py +1069 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message.py +422 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/message_factory.py +237 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto.py +116 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto_builder.py +111 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/proto_json.py +83 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/pyext/cpp_message.py +49 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/reflection.py +85 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/runtime_version.py +123 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/service.py +213 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/service_reflection.py +272 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/source_context_pb2.py +37 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/struct_pb2.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/symbol_database.py +197 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_encoding.py +106 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/text_format.py +1864 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/timestamp_pb2.py +37 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/type_pb2.py +53 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/unknown_fields.py +97 -0
- py2docfx/venv/venv1/Lib/site-packages/google/protobuf/wrappers_pb2.py +53 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/code_pb2.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/context/attribute_context_pb2.py +82 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/context/audit_context_pb2.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/error_details_pb2.py +77 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/http_pb2.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/google/rpc/status_pb2.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/calendar_period_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/color_pb2.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/date_pb2.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/datetime_pb2.py +49 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/dayofweek_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/decimal_pb2.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/expr_pb2.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/fraction_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/interval_pb2.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/latlng_pb2.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/localized_text_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/money_pb2.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/month_pb2.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/phone_number_pb2.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/postal_address_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/quaternion_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/google/type/timeofday_pb2.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/idna/__init__.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/idna/codec.py +122 -0
- py2docfx/venv/venv1/Lib/site-packages/idna/compat.py +15 -0
- py2docfx/venv/venv1/Lib/site-packages/idna/core.py +437 -0
- py2docfx/venv/venv1/Lib/site-packages/idna/idnadata.py +4243 -0
- py2docfx/venv/venv1/Lib/site-packages/idna/intranges.py +57 -0
- py2docfx/venv/venv1/Lib/site-packages/idna/package_data.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/idna/uts46data.py +8681 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/__init__.py +39 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/install.py +812 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/isapicon.py +121 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/advanced.py +218 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector.py +116 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_asynch.py +85 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/redirector_with_filter.py +161 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/samples/test.py +195 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/simple.py +72 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/test/extension_simple.py +114 -0
- py2docfx/venv/venv1/Lib/site-packages/isapi/threaded_extension.py +190 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/__init__.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/algorithms.py +860 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/api_jwk.py +144 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/api_jws.py +335 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/api_jwt.py +377 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/exceptions.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/help.py +64 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/jwk_set_cache.py +31 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/jwks_client.py +124 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/types.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/utils.py +145 -0
- py2docfx/venv/venv1/Lib/site-packages/jwt/warnings.py +2 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/__init__.py +48 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/__main__.py +343 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/application.py +2432 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/auth_scheme.py +34 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/authority.py +225 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/broker.py +265 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/cloudshell.py +122 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/exceptions.py +38 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/individual_cache.py +286 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/managed_identity.py +649 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/mex.py +137 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/__init__.py +7 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/assertion.py +137 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/authcode.py +379 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/http.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/oauth2.py +865 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/oauth2cli/oidc.py +338 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/region.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/telemetry.py +78 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/throttled_http_client.py +148 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/token_cache.py +418 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/wstrust_request.py +129 -0
- py2docfx/venv/venv1/Lib/site-packages/msal/wstrust_response.py +94 -0
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/cache_lock.py +71 -0
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/libsecret.py +134 -0
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/osx.py +252 -0
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/persistence.py +344 -0
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/token_cache.py +88 -0
- py2docfx/venv/venv1/Lib/site-packages/msal_extensions/windows.py +123 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/backports/__init__.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/configuration/__init__.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/http_handler/__init__.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/monitored_resource/aws_identity_doc_utils.py +95 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/monitored_resource/gcp_metadata_config.py +115 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/monitored_resource/k8s_utils.py +64 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/monitored_resource/monitored_resource.py +68 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/resource/__init__.py +218 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/runtime_context/__init__.py +177 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/runtime_context/version.py +15 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/schedule/__init__.py +149 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/transports/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/transports/async_.py +231 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/transports/base.py +31 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/transports/sync.py +28 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/utils/__init__.py +131 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/common/version/__init__.py +15 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/__init__.py +138 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/exporter.py +93 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/processor.py +63 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/protocol.py +206 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/storage.py +205 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/transport.py +358 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/utils.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/common/version.py +15 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/log_exporter/__init__.py +314 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/__init__.py +190 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/__init__.py +62 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/cpu.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/http_requests.py +176 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/memory.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/metrics_exporter/standard_metrics/process.py +87 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/state.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/statsbeat.py +100 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/statsbeat/statsbeat_metrics.py +480 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/azure/trace_exporter/__init__.py +236 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/threading/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/ext/threading/trace.py +154 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/log/__init__.py +115 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/cumulative.py +87 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/gauge.py +513 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/metric.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/metric_descriptor.py +174 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/metric_producer.py +81 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/point.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/summary.py +144 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/time_series.py +90 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/export/value.py +307 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/label_key.py +51 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/label_value.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/metrics/transport.py +145 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/aggregation.py +144 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/aggregation_data.py +399 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/base_exporter.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/bucket_boundaries.py +41 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/execution_context.py +32 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/measure.py +60 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/measure_to_view_map.py +163 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/measurement.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/measurement_map.py +118 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/metric_utils.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/stats.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/stats_recorder.py +34 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/view.py +106 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/view_data.py +96 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/stats/view_manager.py +55 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/__init__.py +23 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/propagation/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/propagation/binary_serializer.py +109 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/tag.py +38 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/tag_key.py +35 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/tag_map.py +104 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/tag_value.py +35 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/tags/validation.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/__init__.py +17 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/attributes.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/attributes_helper.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/base_exporter.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/base_span.py +109 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/blank_span.py +165 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/config_integration.py +38 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/exceptions_status.py +25 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/execution_context.py +89 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/file_exporter.py +71 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/integrations.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/link.py +71 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/logging_exporter.py +85 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/print_exporter.py +51 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/b3_format.py +117 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/binary_format.py +168 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/google_cloud_format.py +128 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/text_format.py +85 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/trace_context_http_header_format.py +115 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/propagation/tracestate_string_format.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/samplers/__init__.py +94 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/span.py +457 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/span_context.py +168 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/span_data.py +184 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/stack_trace.py +189 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/status.py +84 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/time_event.py +117 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/trace_options.py +78 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracer.py +144 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracers/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracers/base.py +82 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracers/context_tracer.py +176 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracers/noop_tracer.py +85 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/tracestate.py +65 -0
- py2docfx/venv/venv1/Lib/site-packages/opencensus/trace/utils.py +128 -0
- py2docfx/venv/venv1/Lib/site-packages/portalocker/__about__.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/portalocker/__init__.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/portalocker/__main__.py +122 -0
- py2docfx/venv/venv1/Lib/site-packages/portalocker/constants.py +59 -0
- py2docfx/venv/venv1/Lib/site-packages/portalocker/exceptions.py +27 -0
- py2docfx/venv/venv1/Lib/site-packages/portalocker/portalocker.py +154 -0
- py2docfx/venv/venv1/Lib/site-packages/portalocker/redis.py +236 -0
- py2docfx/venv/venv1/Lib/site-packages/portalocker/utils.py +569 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/__init__.py +72 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/_file_info.py +196 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/_package_info.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/datetime_helpers.py +225 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/enums.py +161 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/fields.py +165 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/__init__.py +18 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/__init__.py +24 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/maps.py +82 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/collections/repeated.py +184 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/compat.py +67 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/marshal.py +297 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/__init__.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/bytes.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/dates.py +85 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/enums.py +59 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/field_mask.py +36 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/message.py +48 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/stringy_numbers.py +71 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/struct.py +143 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/marshal/rules/wrappers.py +84 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/message.py +998 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/modules.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/primitives.py +38 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/utils.py +58 -0
- py2docfx/venv/venv1/Lib/site-packages/proto/version.py +15 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/__init__.py +2486 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/_common.py +994 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/_compat.py +477 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/_psaix.py +579 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/_psbsd.py +985 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/_pslinux.py +2375 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/_psosx.py +552 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/_psposix.py +243 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/_pssunos.py +753 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/_pswindows.py +1174 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/__init__.py +2113 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/__main__.py +12 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_aix.py +115 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_bsd.py +592 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_connections.py +567 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_contracts.py +339 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_linux.py +2348 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_memleaks.py +493 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_misc.py +1058 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_osx.py +192 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_posix.py +496 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_process.py +1746 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_process_all.py +543 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_sunos.py +39 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_system.py +987 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_testutils.py +587 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_unicode.py +369 -0
- py2docfx/venv/venv1/Lib/site-packages/psutil/tests/test_windows.py +934 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/__init__.py +2 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/ber/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/ber/decoder.py +2189 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/ber/encoder.py +954 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/ber/eoo.py +28 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/cer/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/cer/decoder.py +149 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/cer/encoder.py +331 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/der/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/der/decoder.py +120 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/der/encoder.py +126 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/native/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/native/decoder.py +244 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/native/encoder.py +285 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/codec/streaming.py +234 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/compat/__init__.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/compat/integer.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/debug.py +146 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/error.py +116 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/base.py +699 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/char.py +288 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/constraint.py +751 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/error.py +11 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/namedtype.py +550 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/namedval.py +192 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/opentype.py +104 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/tag.py +335 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/tagmap.py +96 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/univ.py +3327 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1/type/useful.py +189 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/__init__.py +2 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/pem.py +58 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc1155.py +96 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc1157.py +126 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc1901.py +22 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc1902.py +129 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc1905.py +135 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2251.py +563 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2314.py +48 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2315.py +294 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2437.py +69 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2459.py +1339 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2511.py +258 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2560.py +225 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2631.py +37 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2634.py +336 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2876.py +56 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2985.py +588 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc2986.py +75 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3058.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3114.py +77 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3125.py +469 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3161.py +142 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3274.py +59 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3279.py +260 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3280.py +1543 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3281.py +331 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3370.py +146 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3412.py +53 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3414.py +28 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3447.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3537.py +34 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3560.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3565.py +57 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3657.py +66 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3709.py +207 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3739.py +203 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3770.py +75 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3779.py +137 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3820.py +65 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc3852.py +706 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4010.py +58 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4043.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4055.py +258 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4073.py +59 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4108.py +350 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4210.py +803 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4211.py +396 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4334.py +75 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4357.py +477 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4387.py +23 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4476.py +93 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4490.py +113 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4491.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4683.py +72 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc4985.py +49 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5035.py +199 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5083.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5084.py +97 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5126.py +577 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5208.py +56 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5275.py +404 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5280.py +1658 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5480.py +190 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5636.py +113 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5639.py +49 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5649.py +33 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5652.py +761 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5697.py +70 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5751.py +124 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5752.py +49 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5753.py +157 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5755.py +398 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5913.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5914.py +119 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5915.py +32 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5916.py +35 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5917.py +55 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5924.py +19 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5934.py +786 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5940.py +59 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5958.py +98 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc5990.py +237 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6010.py +88 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6019.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6031.py +469 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6032.py +68 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6120.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6170.py +17 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6187.py +22 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6210.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6211.py +72 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6402.py +628 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6482.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6486.py +68 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6487.py +22 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6664.py +147 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6955.py +108 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc6960.py +223 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7030.py +66 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7191.py +261 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7229.py +29 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7292.py +357 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7296.py +32 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7508.py +90 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7585.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7633.py +38 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7773.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7894.py +92 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7906.py +736 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc7914.py +49 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8017.py +153 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8018.py +260 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8103.py +36 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8209.py +20 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8226.py +149 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8358.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8360.py +44 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8398.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8410.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8418.py +36 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8419.py +68 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8479.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8494.py +80 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8520.py +63 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8619.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8649.py +40 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8692.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8696.py +104 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8702.py +105 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8708.py +41 -0
- py2docfx/venv/venv1/Lib/site-packages/pyasn1_modules/rfc8769.py +21 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/__init__.py +93 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/_ast_gen.py +336 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/_build_tables.py +40 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/ast_transforms.py +164 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/c_ast.py +1125 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/c_generator.py +502 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/c_lexer.py +555 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/c_parser.py +1950 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/lextab.py +10 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/__init__.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/cpp.py +905 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/ctokens.py +133 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/lex.py +1099 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/yacc.py +3494 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/ply/ygen.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/plyparser.py +133 -0
- py2docfx/venv/venv1/Lib/site-packages/pycparser/yacctab.py +369 -0
- py2docfx/venv/venv1/Lib/site-packages/pythoncom.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/basictimerapp.py +258 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/customprint.py +185 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/demoutils.py +65 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dlgappdemo.py +51 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/dojobapp.py +71 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/app/helloapp.py +53 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/cmdserver.py +116 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/createwin.py +114 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/demoutils.py +65 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dibdemo.py +73 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dlgtest.py +145 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/dyndlg.py +104 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/fontdemo.py +85 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/guidemo.py +80 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/hiertest.py +138 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/menutest.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/objdoc.py +57 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/demoutils.py +65 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/flash.py +95 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/msoffice.py +159 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxserialtest.py +133 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/ocxtest.py +244 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx/webbrowser.py +72 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/openGLDemo.py +370 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/progressbar.py +105 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/sliderdemo.py +76 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/splittst.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/threadedgui.py +189 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/Demos/toolbar.py +106 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/__init__.py +3 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/__init__.py +133 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/configui.py +34 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgcon.py +32 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/dbgpyapp.py +48 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/debugger.py +1098 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/debugger/fail.py +54 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/ideoptions.py +139 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/list.py +143 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/login.py +156 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/dialogs/status.py +242 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/docking/DockingBar.py +677 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/app.py +414 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/bitmap.py +168 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/cmdline.py +54 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dbgcommands.py +189 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/dlgappcore.py +76 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/ModuleBrowser.py +235 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/__init__.py +103 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color/coloreditor.py +646 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/configui.py +299 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/document.py +380 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/editor.py +511 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/frame.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/template.py +59 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/editor/vss.py +104 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/help.py +172 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/interact.py +995 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpyapp.py +554 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/intpydde.py +60 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/mdi_pychecker.py +850 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/scriptutils.py +686 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/sgrepmdi.py +758 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/startup.py +70 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/stdin.py +171 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/toolmenu.py +281 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/window.py +14 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/framework/winout.py +589 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoExpand.py +95 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/AutoIndent.py +536 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/CallTips.py +218 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/FormatParagraph.py +166 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/IdleHistory.py +87 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/PyParse.py +585 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/idle/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/activex.py +80 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/afxres.py +501 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/dialog.py +280 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/docview.py +151 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/object.py +66 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/thread.py +25 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/mfc/window.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/IDLEenvironment.py +597 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/bindings.py +178 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/config.py +365 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/configui.py +292 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/control.py +565 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/document.py +312 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/find.py +511 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/formatter.py +704 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/keycodes.py +190 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/scintillacon.py +1983 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/scintilla/view.py +845 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/TraceCollector.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browseProjects.py +323 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/browser.py +506 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/hierlist.py +353 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regedit.py +382 -0
- py2docfx/venv/venv1/Lib/site-packages/pythonwin/pywin/tools/regpy.py +80 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/__init__.py +184 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/__version__.py +14 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/_internal_utils.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/adapters.py +719 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/api.py +157 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/auth.py +314 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/certs.py +17 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/compat.py +94 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/cookies.py +561 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/exceptions.py +151 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/help.py +134 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/hooks.py +33 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/models.py +1037 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/packages.py +23 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/sessions.py +831 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/status_codes.py +128 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/structures.py +99 -0
- py2docfx/venv/venv1/Lib/site-packages/requests/utils.py +1096 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/__init__.py +60 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/asn1.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/cli.py +321 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/common.py +184 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/core.py +53 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/key.py +858 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/parallel.py +96 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/pem.py +134 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/pkcs1.py +485 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/pkcs1_v2.py +100 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/prime.py +198 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/randnum.py +95 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/transform.py +72 -0
- py2docfx/venv/venv1/Lib/site-packages/rsa/util.py +97 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/inflect/compat/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/vendored/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/_vendor/zipp/compat/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/build_meta.py +554 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/bdist_wheel.py +653 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/command/egg_info.py +721 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/compat/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/dist.py +996 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/compat/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/config/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/integration/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +646 -0
- py2docfx/venv/venv1/Lib/site-packages/setuptools/tests/test_dist.py +280 -0
- py2docfx/venv/venv1/Lib/site-packages/six.py +998 -0
- py2docfx/venv/venv1/Lib/site-packages/typing_extensions.py +3641 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/__init__.py +211 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/_base_connection.py +172 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/_collections.py +483 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/_request_methods.py +278 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/_version.py +16 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/connection.py +1033 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/connectionpool.py +1182 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/__init__.py +16 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/connection.py +254 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +418 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/request.py +22 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/emscripten/response.py +285 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/pyopenssl.py +552 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/contrib/socks.py +228 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/exceptions.py +321 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/fields.py +341 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/filepost.py +89 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/http2/__init__.py +53 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/http2/connection.py +356 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/http2/probe.py +87 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/poolmanager.py +637 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/response.py +1265 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/__init__.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/connection.py +137 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/proxy.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/request.py +256 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/response.py +101 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/retry.py +533 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_.py +513 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssl_match_hostname.py +159 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/ssltransport.py +276 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/timeout.py +275 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/url.py +471 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/util.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/urllib3/util/wait.py +124 -0
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/wheel/vendored/packaging/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupRead_BackupWrite.py +119 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/BackupSeek_streamheaders.py +137 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CopyFileEx.py +57 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/CreateFileTransacted_MiniVersion.py +122 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtFormatMessage.py +83 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_pull.py +28 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/EvtSubscribe_push.py +25 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/FileSecurityTest.py +137 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/GetSaveFileName.py +43 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/NetValidatePasswordPolicy.py +127 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/OpenEncryptedFileRaw.py +66 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegCreateKeyTransacted.py +60 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/RegRestoreKey.py +71 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/SystemParametersInfo.py +210 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/c_extension/setup.py +26 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeclient.py +18 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/dde/ddeserver.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/desktopmanager.py +246 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/eventLogDemo.py +143 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/getfilever.py +33 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/mmapfile_demo.py +101 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/cat.py +17 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/pipes/runproc.py +114 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/print_desktop.py +113 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/rastest.py +168 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/GetTokenInformation.py +110 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/account_rights.py +51 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/explicit_entries.py +171 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/get_policy_info.py +42 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/list_rights.py +37 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/localized_names.py +65 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsaregevent.py +14 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/lsastore.py +12 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/query_information.py +25 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsave_sa.py +61 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/regsecurity.py +36 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sa_inherit.py +8 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/security_enums.py +336 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_audit.py +107 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_file_owner.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/set_policy_info.py +28 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setkernelobjectsecurity.py +135 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setnamedsecurityinfo.py +131 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setsecurityinfo.py +132 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/setuserobjectsecurity.py +103 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/fetch_url.py +158 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/simple_auth.py +72 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/socket_server.py +200 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/security/sspi/validate_password.py +41 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/nativePipeTestService.py +63 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestService.py +184 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/pipeTestServiceClient.py +155 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/service/serviceEvents.py +98 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/timer_demo.py +72 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboardDemo.py +143 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32clipboard_bitmapdemo.py +117 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32comport_demo.py +144 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32console_demo.py +135 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32cred_demo.py +82 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32fileDemo.py +41 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_demo.py +177 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_devicenotify.py +107 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_dialog.py +445 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_menu.py +409 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32gui_taskbar.py +136 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32netdemo.py +275 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32rcparser_demo.py +86 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32servicedemo.py +23 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32ts_logoff_disconnected.py +25 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/testwnet.py +123 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/win32wnet/winnetwk.py +100 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/Demos/winprocess.py +230 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/_win32verstamp_pywin32ctypes.py +164 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/afxres.py +8 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/commctrl.py +1551 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/mmsystem.py +956 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/netbios.py +295 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/ntsecuritycon.py +731 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_bootstrap.py +29 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywin32_testutil.py +291 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/pywintypes.py +124 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/rasutil.py +40 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/regcheck.py +161 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/regutil.py +395 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspi.py +413 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/sspicon.py +477 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win2kras.py +7 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32con.py +5083 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32cryptcon.py +1925 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32evtlogutil.py +226 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32gui_struct.py +957 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32inetcon.py +1086 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32netcon.py +627 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhquery.py +571 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32pdhutil.py +212 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32rcparser.py +673 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32serviceutil.py +1075 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32timezone.py +1018 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32traceutil.py +59 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/win32verstamp.py +235 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winerror.py +3040 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winioctlcon.py +1079 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winnt.py +1347 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winperf.py +236 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/lib/winxptheme.py +8 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/ControlService.py +594 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/BrandProject.py +97 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/bulkstamp.py +156 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/VersionStamp/vssutil.py +201 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/backupEventLog.py +46 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/killProcName.py +62 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/rasutil.py +98 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/regsetup.py +610 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/scripts/setup_d.py +111 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/handles.py +167 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_clipboard.py +126 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_exceptions.py +213 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_odbc.py +264 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_pywintypes.py +111 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_security.py +166 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_sspi.py +229 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32api.py +269 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32clipboard.py +60 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32cred.py +92 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32crypt.py +131 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32event.py +119 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32file.py +1080 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32gui.py +228 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32guistruct.py +336 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32inet.py +91 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32net.py +24 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32pipe.py +148 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32print.py +24 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32profile.py +19 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32rcparser.py +70 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32timezone.py +16 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32trace.py +366 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/test_win32wnet.py +174 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/test/testall.py +223 -0
- py2docfx/venv/venv1/Lib/site-packages/win32/winxpgui.py +21 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/__init__.py +134 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/CLSIDToClass.py +58 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/__init__.py +685 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/build.py +771 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/combrowse.py +620 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/connect.py +48 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/dynamic.py +699 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/gencache.py +807 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/genpy.py +1398 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/makepy.py +449 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/selecttlb.py +183 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/tlbrowse.py +277 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/client/util.py +103 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/connect.py +96 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/dump_clipboard.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsApartmentThreaded.py +98 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/eventsFreeThreaded.py +92 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelAddin.py +169 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/excelRTDServer.py +434 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/iebutton.py +217 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/ietoolbar.py +368 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/outlookAddin.py +137 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/demos/trybag.py +78 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegw.py +626 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwenum.py +335 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/makegw/makegwparse.py +1019 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/olectl.py +70 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/connect.py +85 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/dispatcher.py +243 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/exception.py +99 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/factory.py +26 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/localserver.py +53 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/policy.py +817 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/register.py +678 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/server/util.py +229 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/PythonTools.py +47 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/dictionary.py +136 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/interp.py +59 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/perfmon.py +36 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/servers/test_pycomtest.py +182 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/storagecon.py +142 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/GenTestScripts.py +97 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/daodump.py +88 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/errorSemantics.py +243 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/pippo_server.py +99 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/policySemantics.py +115 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testADOEvents.py +100 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAXScript.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testAccess.py +185 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testArrays.py +99 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testClipboard.py +169 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testCollections.py +159 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testConversionErrors.py +35 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDCOM.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDates.py +74 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDictionary.py +100 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testDynamic.py +85 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExchange.py +126 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testExplorer.py +139 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGIT.py +142 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testGatewayAddresses.py +149 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testIterators.py +140 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOffice.py +201 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMSOfficeEvents.py +138 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testMarshal.py +160 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testNetscape.py +24 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPersist.py +227 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPippo.py +81 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testPyComTest.py +782 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testROT.py +29 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testServers.py +52 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testShell.py +272 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStorage.py +88 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testStreams.py +147 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testWMI.py +18 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testall.py +321 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testmakepy.py +55 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvb.py +579 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testvbscript_regexp.py +40 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/testxslt.py +34 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/test/util.py +264 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/universal.py +226 -0
- py2docfx/venv/venv1/Lib/site-packages/win32com/util.py +35 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/__init__.py +113 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/adsicon.py +340 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/objectPicker.py +68 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/scp.py +565 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/search.py +152 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/adsi/demos/test.py +274 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/__init__.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditSecurity.py +252 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/authorization/demos/EditServiceSecurity.py +239 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axcontrol/__init__.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/__init__.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/adb.py +473 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/codecontainer.py +275 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/contexts.py +60 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/debugger.py +238 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/documents.py +136 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/dump.py +59 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/expressions.py +212 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/gateways.py +583 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/stackframe.py +178 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axdebug/util.py +105 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/__init__.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/asputil.py +13 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/debug.py +235 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/error.py +263 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/framework.py +1291 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pydumper.py +79 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript.py +443 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/pyscript_rexec.py +54 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/client/scriptdispatch.py +104 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/__init__.py +0 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/server/axsite.py +146 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/leakTest.py +186 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost.py +240 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/axscript/test/testHost4Dbg.py +86 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/__init__.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/show_all_jobs.py +48 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/bits/test/test_bits.py +119 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/__init__.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_record.py +60 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/directsound/test/ds_test.py +402 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/demo/filterDemo.py +300 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/ifilter/ifiltercon.py +110 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/__init__.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/internet/inetcon.py +261 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/__init__.py +21 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/demos/mapisend.py +98 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/emsabtags.py +874 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapitags.py +1025 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/mapi/mapiutil.py +211 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/__init__.py +1 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/pscon.py +838 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/propsys/test/testpropsys.py +5 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/__init__.py +4 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IActiveDesktop.py +83 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IFileOperationProgressSink.py +179 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IShellLinkDataList.py +67 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/ITransferAdviseSink.py +91 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/IUniformResourceLocator.py +56 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/browse_for_folder.py +45 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/create_link.py +73 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/dump_link.py +58 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/explorer_browser.py +143 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/column_provider.py +126 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/context_menu.py +122 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/copy_hook.py +84 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/empty_volume_cache.py +188 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/folder_view.py +866 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/icon_handler.py +82 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/servers/shell_view.py +972 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/shellexecuteex.py +19 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/viewstate.py +68 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/demos/walk_shell_folders.py +24 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/shellcon.py +1615 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testSHFileOperation.py +75 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellFolder.py +21 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/shell/test/testShellItem.py +69 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/__init__.py +6 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask.py +66 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_1.py +68 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtask_2.py +50 -0
- py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_localsystem.py +3 -0
- py2docfx/venv/venv1/Scripts/pywin32_postinstall.py +778 -0
- py2docfx/venv/venv1/Scripts/pywin32_testall.py +125 -0
- py2docfx-0.1.9.dev1897554.dist-info/METADATA +16 -0
- py2docfx-0.1.9.dev1897554.dist-info/RECORD +4241 -0
- py2docfx/venv/venv0/Lib/site-packages/setuptools/build_meta.py +0 -530
- py2docfx/venv/venv0/Lib/site-packages/setuptools/command/bdist_wheel.py +0 -635
- py2docfx/venv/venv0/Lib/site-packages/setuptools/command/egg_info.py +0 -717
- py2docfx/venv/venv0/Lib/site-packages/setuptools/dist.py +0 -955
- py2docfx/venv/venv0/Lib/site-packages/setuptools/tests/test_bdist_wheel.py +0 -621
- py2docfx/venv/venv0/Lib/site-packages/setuptools/tests/test_dist.py +0 -280
- py2docfx-0.1.9.dev1886355.dist-info/METADATA +0 -16
- py2docfx-0.1.9.dev1886355.dist-info/RECORD +0 -2791
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/_distutils_hack/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/_distutils_hack/override.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/operations → venv1/Lib/site-packages/azure/core/tracing/ext}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/operations/build/__init__.py → venv1/Lib/site-packages/google/auth/crypt/_helpers.py} +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/resolution → venv1/Lib/site-packages/google/protobuf/compiler}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/resolution/legacy → venv1/Lib/site-packages/google/protobuf/pyext}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/resolution/resolvelib → venv1/Lib/site-packages/google/protobuf/testdata}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_internal/utils → venv1/Lib/site-packages/google/protobuf/util}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/chardet/cli → venv1/Lib/site-packages/opencensus/common/monitored_resource}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/chardet/metadata → venv1/Lib/site-packages/opencensus/metrics}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/resolvelib/compat → venv1/Lib/site-packages/opencensus/metrics/export}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/__main__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/__pip-runner__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/build_env.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cache.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/autocompletion.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/base_command.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/cmdoptions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/command_context.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/main.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/main_parser.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/parser.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/progress_bars.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/req_command.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/spinners.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/cli/status_codes.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/cache.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/check.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/completion.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/configuration.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/debug.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/download.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/freeze.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/hash.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/help.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/index.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/inspect.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/install.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/list.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/search.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/show.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/uninstall.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/commands/wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/configuration.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/distributions/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/distributions/base.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/distributions/installed.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/distributions/sdist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/distributions/wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/exceptions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/index/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/index/collector.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/index/package_finder.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/index/sources.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/locations/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/locations/_distutils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/locations/_sysconfig.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/locations/base.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/main.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/_json.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/base.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/candidate.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/direct_url.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/format_control.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/index.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/installation_report.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/link.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/scheme.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/search_scope.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/selection_prefs.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/target_python.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/models/wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/auth.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/cache.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/download.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/lazy_wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/session.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/network/xmlrpc.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/urllib3/contrib → venv1/Lib/site-packages/pip/_internal/operations}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport → venv1/Lib/site-packages/pip/_internal/operations/build}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/build_tracker.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/metadata.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/check.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/freeze.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/install/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/install/wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/operations/prepare.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/pyproject.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/constructors.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/req_file.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/req_install.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/req_set.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/req/req_uninstall.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/urllib3/packages → venv1/Lib/site-packages/pip/_internal/resolution}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/base.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pip/_vendor/urllib3/packages/backports → venv1/Lib/site-packages/pip/_internal/resolution/legacy}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/pkg_resources/tests → venv1/Lib/site-packages/pip/_internal/resolution/resolvelib}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/self_outdated_check.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_distutils/tests/compat → venv1/Lib/site-packages/pip/_internal/utils}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/_jaraco_text.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/_log.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/appdirs.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/compat.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/datetime.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/deprecation.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/egg_link.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/encoding.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/entrypoints.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/filesystem.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/filetypes.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/glibc.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/hashes.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/logging.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/misc.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/models.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/packaging.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/setuptools_build.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/subprocess.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/temp_dir.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/unpacking.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/urls.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/virtualenv.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/utils/wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/bazaar.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/git.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/mercurial.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/subversion.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_internal/wheel_builder.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/certifi/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/certifi/__main__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/certifi/core.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/big5freq.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/big5prober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/chardistribution.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/charsetprober.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/backports/tarfile/compat → venv1/Lib/site-packages/pip/_vendor/chardet/cli}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/cp949prober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/enums.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/escprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/escsm.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/euckrprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/euctwprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/jisfreq.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/johabfreq.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/johabprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/jpcntx.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/latin1prober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/macromanprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/mbcssm.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat → venv1/Lib/site-packages/pip/_vendor/chardet/metadata}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/resultdict.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/sjisprober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/universaldetector.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/utf8prober.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/chardet/version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/ansi.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/initialise.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/win32.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/colorama/winterm.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/compat.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/database.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/index.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/locators.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/manifest.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/markers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/metadata.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/resources.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/scripts.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distlib/wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distro/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distro/__main__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/distro/distro.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/codec.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/compat.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/core.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/idnadata.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/intranges.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/package_data.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/idna/uts46data.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/msgpack/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/msgpack/ext.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/msgpack/fallback.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/__about__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/_structures.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/markers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/requirements.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/specifiers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/tags.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/packaging/version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/android.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/api.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/macos.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/unix.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/platformdirs/windows.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/__main__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/cmdline.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/console.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/filter.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatter.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/html.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/img.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/other.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/lexer.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/modeline.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/plugin.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/regexopt.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/scanner.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/style.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/token.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/unistring.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pygments/util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/actions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/common.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/core.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/helpers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/results.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/testing.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/unicode.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyparsing/util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyproject_hooks/_compat.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/__version__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/adapters.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/api.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/auth.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/certs.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/compat.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/cookies.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/exceptions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/help.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/hooks.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/models.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/packages.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/sessions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/status_codes.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/structures.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/requests/utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources → venv1/Lib/site-packages/pip/_vendor/resolvelib}/compat/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/providers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/resolvelib/structs.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/__main__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_export_format.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_extension.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_fileno.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_inspect.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_log_render.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_loop.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_null_file.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_palettes.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_pick.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_ratio.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_spinners.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_stack.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_timer.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_win32_console.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_windows.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/_wrap.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/abc.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/align.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/ansi.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/bar.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/box.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/cells.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/color.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/color_triplet.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/columns.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/console.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/constrain.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/containers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/control.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/default_styles.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/diagnose.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/emoji.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/errors.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/file_proxy.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/filesize.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/highlighter.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/json.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/jupyter.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/layout.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/live.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/live_render.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/logging.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/markup.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/measure.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/padding.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/pager.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/palette.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/panel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/pretty.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/progress.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/progress_bar.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/prompt.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/protocol.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/region.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/repr.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/rule.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/scope.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/screen.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/segment.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/spinner.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/status.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/style.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/styled.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/syntax.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/table.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/terminal_theme.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/text.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/theme.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/themes.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/traceback.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/rich/tree.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/six.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/_asyncio.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/_utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/after.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/before.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/nap.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/retry.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/stop.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tenacity/wait.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tomli/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tomli/_parser.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tomli/_re.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/tomli/_types.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/_api.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/_macos.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/_openssl.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/truststore/_windows.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/typing_extensions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/_collections.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/_version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/connection.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/future → venv1/Lib/site-packages/pip/_vendor/urllib3/contrib}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests → venv1/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/fields.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/filepost.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat → venv1/Lib/site-packages/pip/_vendor/urllib3/packages}/__init__.py +0 -0
- /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
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/request.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/response.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/request.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/response.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/url.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/webencodings/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/webencodings/labels.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/webencodings/mklabels.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/webencodings/tests.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data01/subdirectory → venv1/Lib/site-packages/pkg_resources/tests}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_find_distributions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_integration_zope_interface.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_markers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_pkg_resources.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_resources.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/pkg_resources/tests/test_working_set.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02 → venv1/Lib/site-packages/pythonwin/pywin/Demos/ocx}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/one → venv1/Lib/site-packages/pythonwin/pywin/dialogs}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/data02/two → venv1/Lib/site-packages/pythonwin/pywin/docking}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/inflect/compat → venv1/Lib/site-packages/pythonwin/pywin/framework}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/wheel/vendored → venv1/Lib/site-packages/pythonwin/pywin/framework/editor/color}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging → venv1/Lib/site-packages/pythonwin/pywin/mfc}/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/_vendor/zipp/compat → venv1/Lib/site-packages/pythonwin/pywin/tools}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_core_metadata.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/_log.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/_macos_compat.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/_modified.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/_msvccompiler.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/archive_util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/ccompiler.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/cmd.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/_framework_compat.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/bdist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/build.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/build_clib.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/build_ext.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/build_py.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/build_scripts.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/check.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/clean.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/config.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install_data.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install_headers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install_lib.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/install_scripts.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/command/sdist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/compat/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/compat/py38.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/compat/py39.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/core.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/debug.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/dep_util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/dir_util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/dist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/errors.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/extension.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/fancy_getopt.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/file_util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/filelist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/log.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/spawn.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/sysconfig.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/__init__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools → venv1/Lib/site-packages/setuptools/_distutils/tests}/compat/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/compat/py38.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/support.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_archive_util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_bdist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_bdist_dumb.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_bdist_rpm.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_build.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_build_clib.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_build_ext.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_build_py.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_build_scripts.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_ccompiler.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_check.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_clean.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_cmd.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_config_cmd.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_core.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_cygwinccompiler.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_dir_util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_dist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_extension.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_file_util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_filelist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_install.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_install_data.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_install_headers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_install_lib.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_install_scripts.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_log.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_mingwccompiler.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_modified.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_msvccompiler.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_sdist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_spawn.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_sysconfig.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_text_file.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_unixccompiler.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/test_versionpredicate.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/tests/unix_compat.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/text_file.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/unixccompiler.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/versionpredicate.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_distutils/zosccompiler.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_entry_points.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_imp.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_importlib.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_itertools.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_normalization.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_path.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_reqs.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/autoasync.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/autocommand.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/automain.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/autoparse.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/autocommand/errors.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/backports/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/backports/tarfile/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/backports/tarfile/__main__.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/tests → venv1/Lib/site-packages/setuptools/_vendor/backports/tarfile}/compat/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/backports/tarfile/compat/py38.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_collections.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_compat.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_functools.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_meta.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/_text.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/tests/config → venv1/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/py311.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/compat/py39.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_metadata/diagnose.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/setuptools/tests/integration → venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/compat}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py38.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/compat/py39.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/functional.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/wheel/vendored → venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/future}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/future/adapters.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py +0 -0
- /py2docfx/venv/{venv0/Lib/site-packages/wheel/vendored/packaging → venv1/Lib/site-packages/setuptools/_vendor/importlib_resources/tests}/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/_path.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py312.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/compat/py39.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_compatibilty_files.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_contents.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_custom.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_files.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_functional.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_open.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_path.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_read.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_reader.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/test_resource.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/importlib_resources/tests/zip.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/inflect/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/inflect/compat/py38.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/collections/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/context.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/layouts.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/show-newlines.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/strip-prefix.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/to-dvorak.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/jaraco/text/to-qwerty.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/more_itertools/more.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_musllinux.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_parser.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_structures.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/_tokenizer.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/markers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/metadata.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/requirements.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/tags.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/packaging/version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/__main__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/android.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/api.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/macos.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/unix.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/platformdirs/windows.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/tomli/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/tomli/_parser.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/tomli/_re.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/tomli/_types.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_checkers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_config.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_decorators.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_exceptions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_functions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_importhook.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_memo.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_pytest_plugin.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_suppression.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_transformer.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_union_transformer.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typeguard/_utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/typing_extensions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/__main__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/_setuptools_logging.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/bdist_wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/cli/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/cli/convert.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/cli/pack.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/cli/tags.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/cli/unpack.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/macosx_libfile.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/metadata.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_elffile.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_manylinux.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_musllinux.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_parser.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_structures.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/_tokenizer.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/markers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/requirements.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/specifiers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/tags.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/vendored/packaging/version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/wheel/wheelfile.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/zipp/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/zipp/compat/py310.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/_vendor/zipp/glob.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/archive_util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/_requirestxt.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/alias.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/bdist_egg.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/bdist_rpm.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/build.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/build_clib.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/build_ext.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/build_py.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/develop.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/dist_info.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/easy_install.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/editable_wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/install.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/install_egg_info.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/install_lib.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/install_scripts.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/rotate.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/saveopts.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/sdist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/setopt.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/command/test.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/compat/py310.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/compat/py311.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/compat/py312.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/compat/py39.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/error_reporting.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/expand.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/pyprojecttoml.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/config/setupcfg.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/depends.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/discovery.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/errors.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/extension.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/glob.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/installer.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/launch.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/logging.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/modified.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/monkey.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/msvc.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/namespaces.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/package_index.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/sandbox.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/compat/py39.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/downloads/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/downloads/preload.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/test_apply_pyprojecttoml.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/test_expand.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/test_pyprojecttoml_dynamic_deps.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/config/test_setupcfg.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/contexts.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/environment.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/fixtures.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/integration/helpers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/integration/test_pip_install_sdist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/mod_with_constant.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/namespaces.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/script-with-bom.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/server.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_archive_util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_bdist_deprecations.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_bdist_egg.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_build.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_build_clib.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_build_ext.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_build_meta.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_build_py.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_config_discovery.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_core_metadata.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_depends.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_develop.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_dist_info.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_distutils_adoption.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_easy_install.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_editable_install.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_egg_info.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_extern.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_find_packages.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_find_py_modules.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_glob.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_install_scripts.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_logging.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_manifest.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_namespaces.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_packageindex.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_sandbox.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_sdist.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_setopt.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_setuptools.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_unicode_utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_virtualenv.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_warnings.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/test_windows_wrappers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/text.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/tests/textwrap.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/unicode_utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/warnings.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/setuptools/windows_support.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/__main__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/_bdist_wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/_setuptools_logging.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/bdist_wheel.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/cli/__init__.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/cli/convert.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/cli/pack.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/cli/tags.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/cli/unpack.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/macosx_libfile.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/metadata.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/util.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_elffile.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_manylinux.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_musllinux.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_parser.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_structures.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/_tokenizer.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/markers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/requirements.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/specifiers.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/tags.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/utils.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/vendored/packaging/version.py +0 -0
- /py2docfx/venv/{venv0 → venv1}/Lib/site-packages/wheel/wheelfile.py +0 -0
- {py2docfx-0.1.9.dev1886355.dist-info → py2docfx-0.1.9.dev1897554.dist-info}/WHEEL +0 -0
- {py2docfx-0.1.9.dev1886355.dist-info → py2docfx-0.1.9.dev1897554.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
|