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,2375 @@
|
|
1
|
+
# Copyright (c) 2009, Giampaolo Rodola'. All rights reserved.
|
2
|
+
# Use of this source code is governed by a BSD-style license that can be
|
3
|
+
# found in the LICENSE file.
|
4
|
+
|
5
|
+
"""Linux platform implementation."""
|
6
|
+
|
7
|
+
from __future__ import division
|
8
|
+
|
9
|
+
import base64
|
10
|
+
import collections
|
11
|
+
import errno
|
12
|
+
import functools
|
13
|
+
import glob
|
14
|
+
import os
|
15
|
+
import re
|
16
|
+
import socket
|
17
|
+
import struct
|
18
|
+
import sys
|
19
|
+
import warnings
|
20
|
+
from collections import defaultdict
|
21
|
+
from collections import namedtuple
|
22
|
+
|
23
|
+
from . import _common
|
24
|
+
from . import _psposix
|
25
|
+
from . import _psutil_linux as cext
|
26
|
+
from . import _psutil_posix as cext_posix
|
27
|
+
from ._common import NIC_DUPLEX_FULL
|
28
|
+
from ._common import NIC_DUPLEX_HALF
|
29
|
+
from ._common import NIC_DUPLEX_UNKNOWN
|
30
|
+
from ._common import AccessDenied
|
31
|
+
from ._common import NoSuchProcess
|
32
|
+
from ._common import ZombieProcess
|
33
|
+
from ._common import bcat
|
34
|
+
from ._common import cat
|
35
|
+
from ._common import debug
|
36
|
+
from ._common import decode
|
37
|
+
from ._common import get_procfs_path
|
38
|
+
from ._common import isfile_strict
|
39
|
+
from ._common import memoize
|
40
|
+
from ._common import memoize_when_activated
|
41
|
+
from ._common import open_binary
|
42
|
+
from ._common import open_text
|
43
|
+
from ._common import parse_environ_block
|
44
|
+
from ._common import path_exists_strict
|
45
|
+
from ._common import supports_ipv6
|
46
|
+
from ._common import usage_percent
|
47
|
+
from ._compat import PY3
|
48
|
+
from ._compat import FileNotFoundError
|
49
|
+
from ._compat import PermissionError
|
50
|
+
from ._compat import ProcessLookupError
|
51
|
+
from ._compat import b
|
52
|
+
from ._compat import basestring
|
53
|
+
|
54
|
+
|
55
|
+
if PY3:
|
56
|
+
import enum
|
57
|
+
else:
|
58
|
+
enum = None
|
59
|
+
|
60
|
+
|
61
|
+
# fmt: off
|
62
|
+
__extra__all__ = [
|
63
|
+
'PROCFS_PATH',
|
64
|
+
# io prio constants
|
65
|
+
"IOPRIO_CLASS_NONE", "IOPRIO_CLASS_RT", "IOPRIO_CLASS_BE",
|
66
|
+
"IOPRIO_CLASS_IDLE",
|
67
|
+
# connection status constants
|
68
|
+
"CONN_ESTABLISHED", "CONN_SYN_SENT", "CONN_SYN_RECV", "CONN_FIN_WAIT1",
|
69
|
+
"CONN_FIN_WAIT2", "CONN_TIME_WAIT", "CONN_CLOSE", "CONN_CLOSE_WAIT",
|
70
|
+
"CONN_LAST_ACK", "CONN_LISTEN", "CONN_CLOSING",
|
71
|
+
]
|
72
|
+
# fmt: on
|
73
|
+
|
74
|
+
|
75
|
+
# =====================================================================
|
76
|
+
# --- globals
|
77
|
+
# =====================================================================
|
78
|
+
|
79
|
+
|
80
|
+
POWER_SUPPLY_PATH = "/sys/class/power_supply"
|
81
|
+
HAS_PROC_SMAPS = os.path.exists('/proc/%s/smaps' % os.getpid())
|
82
|
+
HAS_PROC_SMAPS_ROLLUP = os.path.exists('/proc/%s/smaps_rollup' % os.getpid())
|
83
|
+
HAS_PROC_IO_PRIORITY = hasattr(cext, "proc_ioprio_get")
|
84
|
+
HAS_CPU_AFFINITY = hasattr(cext, "proc_cpu_affinity_get")
|
85
|
+
|
86
|
+
# Number of clock ticks per second
|
87
|
+
CLOCK_TICKS = os.sysconf("SC_CLK_TCK")
|
88
|
+
PAGESIZE = cext_posix.getpagesize()
|
89
|
+
BOOT_TIME = None # set later
|
90
|
+
LITTLE_ENDIAN = sys.byteorder == 'little'
|
91
|
+
|
92
|
+
# "man iostat" states that sectors are equivalent with blocks and have
|
93
|
+
# a size of 512 bytes. Despite this value can be queried at runtime
|
94
|
+
# via /sys/block/{DISK}/queue/hw_sector_size and results may vary
|
95
|
+
# between 1k, 2k, or 4k... 512 appears to be a magic constant used
|
96
|
+
# throughout Linux source code:
|
97
|
+
# * https://stackoverflow.com/a/38136179/376587
|
98
|
+
# * https://lists.gt.net/linux/kernel/2241060
|
99
|
+
# * https://github.com/giampaolo/psutil/issues/1305
|
100
|
+
# * https://github.com/torvalds/linux/blob/
|
101
|
+
# 4f671fe2f9523a1ea206f63fe60a7c7b3a56d5c7/include/linux/bio.h#L99
|
102
|
+
# * https://lkml.org/lkml/2015/8/17/234
|
103
|
+
DISK_SECTOR_SIZE = 512
|
104
|
+
|
105
|
+
if enum is None:
|
106
|
+
AF_LINK = socket.AF_PACKET
|
107
|
+
else:
|
108
|
+
AddressFamily = enum.IntEnum(
|
109
|
+
'AddressFamily', {'AF_LINK': int(socket.AF_PACKET)}
|
110
|
+
)
|
111
|
+
AF_LINK = AddressFamily.AF_LINK
|
112
|
+
|
113
|
+
# ioprio_* constants http://linux.die.net/man/2/ioprio_get
|
114
|
+
if enum is None:
|
115
|
+
IOPRIO_CLASS_NONE = 0
|
116
|
+
IOPRIO_CLASS_RT = 1
|
117
|
+
IOPRIO_CLASS_BE = 2
|
118
|
+
IOPRIO_CLASS_IDLE = 3
|
119
|
+
else:
|
120
|
+
|
121
|
+
class IOPriority(enum.IntEnum):
|
122
|
+
IOPRIO_CLASS_NONE = 0
|
123
|
+
IOPRIO_CLASS_RT = 1
|
124
|
+
IOPRIO_CLASS_BE = 2
|
125
|
+
IOPRIO_CLASS_IDLE = 3
|
126
|
+
|
127
|
+
globals().update(IOPriority.__members__)
|
128
|
+
|
129
|
+
# See:
|
130
|
+
# https://github.com/torvalds/linux/blame/master/fs/proc/array.c
|
131
|
+
# ...and (TASK_* constants):
|
132
|
+
# https://github.com/torvalds/linux/blob/master/include/linux/sched.h
|
133
|
+
PROC_STATUSES = {
|
134
|
+
"R": _common.STATUS_RUNNING,
|
135
|
+
"S": _common.STATUS_SLEEPING,
|
136
|
+
"D": _common.STATUS_DISK_SLEEP,
|
137
|
+
"T": _common.STATUS_STOPPED,
|
138
|
+
"t": _common.STATUS_TRACING_STOP,
|
139
|
+
"Z": _common.STATUS_ZOMBIE,
|
140
|
+
"X": _common.STATUS_DEAD,
|
141
|
+
"x": _common.STATUS_DEAD,
|
142
|
+
"K": _common.STATUS_WAKE_KILL,
|
143
|
+
"W": _common.STATUS_WAKING,
|
144
|
+
"I": _common.STATUS_IDLE,
|
145
|
+
"P": _common.STATUS_PARKED,
|
146
|
+
}
|
147
|
+
|
148
|
+
# https://github.com/torvalds/linux/blob/master/include/net/tcp_states.h
|
149
|
+
TCP_STATUSES = {
|
150
|
+
"01": _common.CONN_ESTABLISHED,
|
151
|
+
"02": _common.CONN_SYN_SENT,
|
152
|
+
"03": _common.CONN_SYN_RECV,
|
153
|
+
"04": _common.CONN_FIN_WAIT1,
|
154
|
+
"05": _common.CONN_FIN_WAIT2,
|
155
|
+
"06": _common.CONN_TIME_WAIT,
|
156
|
+
"07": _common.CONN_CLOSE,
|
157
|
+
"08": _common.CONN_CLOSE_WAIT,
|
158
|
+
"09": _common.CONN_LAST_ACK,
|
159
|
+
"0A": _common.CONN_LISTEN,
|
160
|
+
"0B": _common.CONN_CLOSING,
|
161
|
+
}
|
162
|
+
|
163
|
+
|
164
|
+
# =====================================================================
|
165
|
+
# --- named tuples
|
166
|
+
# =====================================================================
|
167
|
+
|
168
|
+
|
169
|
+
# fmt: off
|
170
|
+
# psutil.virtual_memory()
|
171
|
+
svmem = namedtuple(
|
172
|
+
'svmem', ['total', 'available', 'percent', 'used', 'free',
|
173
|
+
'active', 'inactive', 'buffers', 'cached', 'shared', 'slab'])
|
174
|
+
# psutil.disk_io_counters()
|
175
|
+
sdiskio = namedtuple(
|
176
|
+
'sdiskio', ['read_count', 'write_count',
|
177
|
+
'read_bytes', 'write_bytes',
|
178
|
+
'read_time', 'write_time',
|
179
|
+
'read_merged_count', 'write_merged_count',
|
180
|
+
'busy_time'])
|
181
|
+
# psutil.Process().open_files()
|
182
|
+
popenfile = namedtuple(
|
183
|
+
'popenfile', ['path', 'fd', 'position', 'mode', 'flags'])
|
184
|
+
# psutil.Process().memory_info()
|
185
|
+
pmem = namedtuple('pmem', 'rss vms shared text lib data dirty')
|
186
|
+
# psutil.Process().memory_full_info()
|
187
|
+
pfullmem = namedtuple('pfullmem', pmem._fields + ('uss', 'pss', 'swap'))
|
188
|
+
# psutil.Process().memory_maps(grouped=True)
|
189
|
+
pmmap_grouped = namedtuple(
|
190
|
+
'pmmap_grouped',
|
191
|
+
['path', 'rss', 'size', 'pss', 'shared_clean', 'shared_dirty',
|
192
|
+
'private_clean', 'private_dirty', 'referenced', 'anonymous', 'swap'])
|
193
|
+
# psutil.Process().memory_maps(grouped=False)
|
194
|
+
pmmap_ext = namedtuple(
|
195
|
+
'pmmap_ext', 'addr perms ' + ' '.join(pmmap_grouped._fields))
|
196
|
+
# psutil.Process.io_counters()
|
197
|
+
pio = namedtuple('pio', ['read_count', 'write_count',
|
198
|
+
'read_bytes', 'write_bytes',
|
199
|
+
'read_chars', 'write_chars'])
|
200
|
+
# psutil.Process.cpu_times()
|
201
|
+
pcputimes = namedtuple('pcputimes',
|
202
|
+
['user', 'system', 'children_user', 'children_system',
|
203
|
+
'iowait'])
|
204
|
+
# fmt: on
|
205
|
+
|
206
|
+
|
207
|
+
# =====================================================================
|
208
|
+
# --- utils
|
209
|
+
# =====================================================================
|
210
|
+
|
211
|
+
|
212
|
+
def readlink(path):
|
213
|
+
"""Wrapper around os.readlink()."""
|
214
|
+
assert isinstance(path, basestring), path
|
215
|
+
path = os.readlink(path)
|
216
|
+
# readlink() might return paths containing null bytes ('\x00')
|
217
|
+
# resulting in "TypeError: must be encoded string without NULL
|
218
|
+
# bytes, not str" errors when the string is passed to other
|
219
|
+
# fs-related functions (os.*, open(), ...).
|
220
|
+
# Apparently everything after '\x00' is garbage (we can have
|
221
|
+
# ' (deleted)', 'new' and possibly others), see:
|
222
|
+
# https://github.com/giampaolo/psutil/issues/717
|
223
|
+
path = path.split('\x00')[0]
|
224
|
+
# Certain paths have ' (deleted)' appended. Usually this is
|
225
|
+
# bogus as the file actually exists. Even if it doesn't we
|
226
|
+
# don't care.
|
227
|
+
if path.endswith(' (deleted)') and not path_exists_strict(path):
|
228
|
+
path = path[:-10]
|
229
|
+
return path
|
230
|
+
|
231
|
+
|
232
|
+
def file_flags_to_mode(flags):
|
233
|
+
"""Convert file's open() flags into a readable string.
|
234
|
+
Used by Process.open_files().
|
235
|
+
"""
|
236
|
+
modes_map = {os.O_RDONLY: 'r', os.O_WRONLY: 'w', os.O_RDWR: 'w+'}
|
237
|
+
mode = modes_map[flags & (os.O_RDONLY | os.O_WRONLY | os.O_RDWR)]
|
238
|
+
if flags & os.O_APPEND:
|
239
|
+
mode = mode.replace('w', 'a', 1)
|
240
|
+
mode = mode.replace('w+', 'r+')
|
241
|
+
# possible values: r, w, a, r+, a+
|
242
|
+
return mode
|
243
|
+
|
244
|
+
|
245
|
+
def is_storage_device(name):
|
246
|
+
"""Return True if the given name refers to a root device (e.g.
|
247
|
+
"sda", "nvme0n1") as opposed to a logical partition (e.g. "sda1",
|
248
|
+
"nvme0n1p1"). If name is a virtual device (e.g. "loop1", "ram")
|
249
|
+
return True.
|
250
|
+
"""
|
251
|
+
# Re-adapted from iostat source code, see:
|
252
|
+
# https://github.com/sysstat/sysstat/blob/
|
253
|
+
# 97912938cd476645b267280069e83b1c8dc0e1c7/common.c#L208
|
254
|
+
# Some devices may have a slash in their name (e.g. cciss/c0d0...).
|
255
|
+
name = name.replace('/', '!')
|
256
|
+
including_virtual = True
|
257
|
+
if including_virtual:
|
258
|
+
path = "/sys/block/%s" % name
|
259
|
+
else:
|
260
|
+
path = "/sys/block/%s/device" % name
|
261
|
+
return os.access(path, os.F_OK)
|
262
|
+
|
263
|
+
|
264
|
+
@memoize
|
265
|
+
def set_scputimes_ntuple(procfs_path):
|
266
|
+
"""Set a namedtuple of variable fields depending on the CPU times
|
267
|
+
available on this Linux kernel version which may be:
|
268
|
+
(user, nice, system, idle, iowait, irq, softirq, [steal, [guest,
|
269
|
+
[guest_nice]]])
|
270
|
+
Used by cpu_times() function.
|
271
|
+
"""
|
272
|
+
global scputimes
|
273
|
+
with open_binary('%s/stat' % procfs_path) as f:
|
274
|
+
values = f.readline().split()[1:]
|
275
|
+
fields = ['user', 'nice', 'system', 'idle', 'iowait', 'irq', 'softirq']
|
276
|
+
vlen = len(values)
|
277
|
+
if vlen >= 8:
|
278
|
+
# Linux >= 2.6.11
|
279
|
+
fields.append('steal')
|
280
|
+
if vlen >= 9:
|
281
|
+
# Linux >= 2.6.24
|
282
|
+
fields.append('guest')
|
283
|
+
if vlen >= 10:
|
284
|
+
# Linux >= 3.2.0
|
285
|
+
fields.append('guest_nice')
|
286
|
+
scputimes = namedtuple('scputimes', fields)
|
287
|
+
|
288
|
+
|
289
|
+
try:
|
290
|
+
set_scputimes_ntuple("/proc")
|
291
|
+
except Exception as err: # noqa: BLE001
|
292
|
+
# Don't want to crash at import time.
|
293
|
+
debug("ignoring exception on import: %r" % err)
|
294
|
+
scputimes = namedtuple('scputimes', 'user system idle')(0.0, 0.0, 0.0)
|
295
|
+
|
296
|
+
|
297
|
+
# =====================================================================
|
298
|
+
# --- prlimit
|
299
|
+
# =====================================================================
|
300
|
+
|
301
|
+
# Backport of resource.prlimit() for Python 2. Originally this was done
|
302
|
+
# in C, but CentOS-6 which we use to create manylinux wheels is too old
|
303
|
+
# and does not support prlimit() syscall. As such the resulting wheel
|
304
|
+
# would not include prlimit(), even when installed on newer systems.
|
305
|
+
# This is the only part of psutil using ctypes.
|
306
|
+
|
307
|
+
prlimit = None
|
308
|
+
try:
|
309
|
+
from resource import prlimit # python >= 3.4
|
310
|
+
except ImportError:
|
311
|
+
import ctypes
|
312
|
+
|
313
|
+
libc = ctypes.CDLL(None, use_errno=True)
|
314
|
+
|
315
|
+
if hasattr(libc, "prlimit"):
|
316
|
+
|
317
|
+
def prlimit(pid, resource_, limits=None):
|
318
|
+
class StructRlimit(ctypes.Structure):
|
319
|
+
_fields_ = [
|
320
|
+
('rlim_cur', ctypes.c_longlong),
|
321
|
+
('rlim_max', ctypes.c_longlong),
|
322
|
+
]
|
323
|
+
|
324
|
+
current = StructRlimit()
|
325
|
+
if limits is None:
|
326
|
+
# get
|
327
|
+
ret = libc.prlimit(pid, resource_, None, ctypes.byref(current))
|
328
|
+
else:
|
329
|
+
# set
|
330
|
+
new = StructRlimit()
|
331
|
+
new.rlim_cur = limits[0]
|
332
|
+
new.rlim_max = limits[1]
|
333
|
+
ret = libc.prlimit(
|
334
|
+
pid, resource_, ctypes.byref(new), ctypes.byref(current)
|
335
|
+
)
|
336
|
+
|
337
|
+
if ret != 0:
|
338
|
+
errno_ = ctypes.get_errno()
|
339
|
+
raise OSError(errno_, os.strerror(errno_))
|
340
|
+
return (current.rlim_cur, current.rlim_max)
|
341
|
+
|
342
|
+
|
343
|
+
if prlimit is not None:
|
344
|
+
__extra__all__.extend(
|
345
|
+
[x for x in dir(cext) if x.startswith('RLIM') and x.isupper()]
|
346
|
+
)
|
347
|
+
|
348
|
+
|
349
|
+
# =====================================================================
|
350
|
+
# --- system memory
|
351
|
+
# =====================================================================
|
352
|
+
|
353
|
+
|
354
|
+
def calculate_avail_vmem(mems):
|
355
|
+
"""Fallback for kernels < 3.14 where /proc/meminfo does not provide
|
356
|
+
"MemAvailable", see:
|
357
|
+
https://blog.famzah.net/2014/09/24/.
|
358
|
+
|
359
|
+
This code reimplements the algorithm outlined here:
|
360
|
+
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
|
361
|
+
commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
|
362
|
+
|
363
|
+
We use this function also when "MemAvailable" returns 0 (possibly a
|
364
|
+
kernel bug, see: https://github.com/giampaolo/psutil/issues/1915).
|
365
|
+
In that case this routine matches "free" CLI tool result ("available"
|
366
|
+
column).
|
367
|
+
|
368
|
+
XXX: on recent kernels this calculation may differ by ~1.5% compared
|
369
|
+
to "MemAvailable:", as it's calculated slightly differently.
|
370
|
+
It is still way more realistic than doing (free + cached) though.
|
371
|
+
See:
|
372
|
+
* https://gitlab.com/procps-ng/procps/issues/42
|
373
|
+
* https://github.com/famzah/linux-memavailable-procfs/issues/2
|
374
|
+
"""
|
375
|
+
# Note about "fallback" value. According to:
|
376
|
+
# https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
|
377
|
+
# commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
|
378
|
+
# ...long ago "available" memory was calculated as (free + cached),
|
379
|
+
# We use fallback when one of these is missing from /proc/meminfo:
|
380
|
+
# "Active(file)": introduced in 2.6.28 / Dec 2008
|
381
|
+
# "Inactive(file)": introduced in 2.6.28 / Dec 2008
|
382
|
+
# "SReclaimable": introduced in 2.6.19 / Nov 2006
|
383
|
+
# /proc/zoneinfo: introduced in 2.6.13 / Aug 2005
|
384
|
+
free = mems[b'MemFree:']
|
385
|
+
fallback = free + mems.get(b"Cached:", 0)
|
386
|
+
try:
|
387
|
+
lru_active_file = mems[b'Active(file):']
|
388
|
+
lru_inactive_file = mems[b'Inactive(file):']
|
389
|
+
slab_reclaimable = mems[b'SReclaimable:']
|
390
|
+
except KeyError as err:
|
391
|
+
debug(
|
392
|
+
"%s is missing from /proc/meminfo; using an approximation for "
|
393
|
+
"calculating available memory"
|
394
|
+
% err.args[0]
|
395
|
+
)
|
396
|
+
return fallback
|
397
|
+
try:
|
398
|
+
f = open_binary('%s/zoneinfo' % get_procfs_path())
|
399
|
+
except IOError:
|
400
|
+
return fallback # kernel 2.6.13
|
401
|
+
|
402
|
+
watermark_low = 0
|
403
|
+
with f:
|
404
|
+
for line in f:
|
405
|
+
line = line.strip()
|
406
|
+
if line.startswith(b'low'):
|
407
|
+
watermark_low += int(line.split()[1])
|
408
|
+
watermark_low *= PAGESIZE
|
409
|
+
|
410
|
+
avail = free - watermark_low
|
411
|
+
pagecache = lru_active_file + lru_inactive_file
|
412
|
+
pagecache -= min(pagecache / 2, watermark_low)
|
413
|
+
avail += pagecache
|
414
|
+
avail += slab_reclaimable - min(slab_reclaimable / 2.0, watermark_low)
|
415
|
+
return int(avail)
|
416
|
+
|
417
|
+
|
418
|
+
def virtual_memory():
|
419
|
+
"""Report virtual memory stats.
|
420
|
+
This implementation mimics procps-ng-3.3.12, aka "free" CLI tool:
|
421
|
+
https://gitlab.com/procps-ng/procps/blob/
|
422
|
+
24fd2605c51fccc375ab0287cec33aa767f06718/proc/sysinfo.c#L778-791
|
423
|
+
The returned values are supposed to match both "free" and "vmstat -s"
|
424
|
+
CLI tools.
|
425
|
+
"""
|
426
|
+
missing_fields = []
|
427
|
+
mems = {}
|
428
|
+
with open_binary('%s/meminfo' % get_procfs_path()) as f:
|
429
|
+
for line in f:
|
430
|
+
fields = line.split()
|
431
|
+
mems[fields[0]] = int(fields[1]) * 1024
|
432
|
+
|
433
|
+
# /proc doc states that the available fields in /proc/meminfo vary
|
434
|
+
# by architecture and compile options, but these 3 values are also
|
435
|
+
# returned by sysinfo(2); as such we assume they are always there.
|
436
|
+
total = mems[b'MemTotal:']
|
437
|
+
free = mems[b'MemFree:']
|
438
|
+
try:
|
439
|
+
buffers = mems[b'Buffers:']
|
440
|
+
except KeyError:
|
441
|
+
# https://github.com/giampaolo/psutil/issues/1010
|
442
|
+
buffers = 0
|
443
|
+
missing_fields.append('buffers')
|
444
|
+
try:
|
445
|
+
cached = mems[b"Cached:"]
|
446
|
+
except KeyError:
|
447
|
+
cached = 0
|
448
|
+
missing_fields.append('cached')
|
449
|
+
else:
|
450
|
+
# "free" cmdline utility sums reclaimable to cached.
|
451
|
+
# Older versions of procps used to add slab memory instead.
|
452
|
+
# This got changed in:
|
453
|
+
# https://gitlab.com/procps-ng/procps/commit/
|
454
|
+
# 05d751c4f076a2f0118b914c5e51cfbb4762ad8e
|
455
|
+
cached += mems.get(b"SReclaimable:", 0) # since kernel 2.6.19
|
456
|
+
|
457
|
+
try:
|
458
|
+
shared = mems[b'Shmem:'] # since kernel 2.6.32
|
459
|
+
except KeyError:
|
460
|
+
try:
|
461
|
+
shared = mems[b'MemShared:'] # kernels 2.4
|
462
|
+
except KeyError:
|
463
|
+
shared = 0
|
464
|
+
missing_fields.append('shared')
|
465
|
+
|
466
|
+
try:
|
467
|
+
active = mems[b"Active:"]
|
468
|
+
except KeyError:
|
469
|
+
active = 0
|
470
|
+
missing_fields.append('active')
|
471
|
+
|
472
|
+
try:
|
473
|
+
inactive = mems[b"Inactive:"]
|
474
|
+
except KeyError:
|
475
|
+
try:
|
476
|
+
inactive = (
|
477
|
+
mems[b"Inact_dirty:"]
|
478
|
+
+ mems[b"Inact_clean:"]
|
479
|
+
+ mems[b"Inact_laundry:"]
|
480
|
+
)
|
481
|
+
except KeyError:
|
482
|
+
inactive = 0
|
483
|
+
missing_fields.append('inactive')
|
484
|
+
|
485
|
+
try:
|
486
|
+
slab = mems[b"Slab:"]
|
487
|
+
except KeyError:
|
488
|
+
slab = 0
|
489
|
+
|
490
|
+
used = total - free - cached - buffers
|
491
|
+
if used < 0:
|
492
|
+
# May be symptomatic of running within a LCX container where such
|
493
|
+
# values will be dramatically distorted over those of the host.
|
494
|
+
used = total - free
|
495
|
+
|
496
|
+
# - starting from 4.4.0 we match free's "available" column.
|
497
|
+
# Before 4.4.0 we calculated it as (free + buffers + cached)
|
498
|
+
# which matched htop.
|
499
|
+
# - free and htop available memory differs as per:
|
500
|
+
# http://askubuntu.com/a/369589
|
501
|
+
# http://unix.stackexchange.com/a/65852/168884
|
502
|
+
# - MemAvailable has been introduced in kernel 3.14
|
503
|
+
try:
|
504
|
+
avail = mems[b'MemAvailable:']
|
505
|
+
except KeyError:
|
506
|
+
avail = calculate_avail_vmem(mems)
|
507
|
+
else:
|
508
|
+
if avail == 0:
|
509
|
+
# Yes, it can happen (probably a kernel bug):
|
510
|
+
# https://github.com/giampaolo/psutil/issues/1915
|
511
|
+
# In this case "free" CLI tool makes an estimate. We do the same,
|
512
|
+
# and it matches "free" CLI tool.
|
513
|
+
avail = calculate_avail_vmem(mems)
|
514
|
+
|
515
|
+
if avail < 0:
|
516
|
+
avail = 0
|
517
|
+
missing_fields.append('available')
|
518
|
+
elif avail > total:
|
519
|
+
# If avail is greater than total or our calculation overflows,
|
520
|
+
# that's symptomatic of running within a LCX container where such
|
521
|
+
# values will be dramatically distorted over those of the host.
|
522
|
+
# https://gitlab.com/procps-ng/procps/blob/
|
523
|
+
# 24fd2605c51fccc375ab0287cec33aa767f06718/proc/sysinfo.c#L764
|
524
|
+
avail = free
|
525
|
+
|
526
|
+
percent = usage_percent((total - avail), total, round_=1)
|
527
|
+
|
528
|
+
# Warn about missing metrics which are set to 0.
|
529
|
+
if missing_fields:
|
530
|
+
msg = "%s memory stats couldn't be determined and %s set to 0" % (
|
531
|
+
", ".join(missing_fields),
|
532
|
+
"was" if len(missing_fields) == 1 else "were",
|
533
|
+
)
|
534
|
+
warnings.warn(msg, RuntimeWarning, stacklevel=2)
|
535
|
+
|
536
|
+
return svmem(
|
537
|
+
total,
|
538
|
+
avail,
|
539
|
+
percent,
|
540
|
+
used,
|
541
|
+
free,
|
542
|
+
active,
|
543
|
+
inactive,
|
544
|
+
buffers,
|
545
|
+
cached,
|
546
|
+
shared,
|
547
|
+
slab,
|
548
|
+
)
|
549
|
+
|
550
|
+
|
551
|
+
def swap_memory():
|
552
|
+
"""Return swap memory metrics."""
|
553
|
+
mems = {}
|
554
|
+
with open_binary('%s/meminfo' % get_procfs_path()) as f:
|
555
|
+
for line in f:
|
556
|
+
fields = line.split()
|
557
|
+
mems[fields[0]] = int(fields[1]) * 1024
|
558
|
+
# We prefer /proc/meminfo over sysinfo() syscall so that
|
559
|
+
# psutil.PROCFS_PATH can be used in order to allow retrieval
|
560
|
+
# for linux containers, see:
|
561
|
+
# https://github.com/giampaolo/psutil/issues/1015
|
562
|
+
try:
|
563
|
+
total = mems[b'SwapTotal:']
|
564
|
+
free = mems[b'SwapFree:']
|
565
|
+
except KeyError:
|
566
|
+
_, _, _, _, total, free, unit_multiplier = cext.linux_sysinfo()
|
567
|
+
total *= unit_multiplier
|
568
|
+
free *= unit_multiplier
|
569
|
+
|
570
|
+
used = total - free
|
571
|
+
percent = usage_percent(used, total, round_=1)
|
572
|
+
# get pgin/pgouts
|
573
|
+
try:
|
574
|
+
f = open_binary("%s/vmstat" % get_procfs_path())
|
575
|
+
except IOError as err:
|
576
|
+
# see https://github.com/giampaolo/psutil/issues/722
|
577
|
+
msg = (
|
578
|
+
"'sin' and 'sout' swap memory stats couldn't "
|
579
|
+
+ "be determined and were set to 0 (%s)" % str(err)
|
580
|
+
)
|
581
|
+
warnings.warn(msg, RuntimeWarning, stacklevel=2)
|
582
|
+
sin = sout = 0
|
583
|
+
else:
|
584
|
+
with f:
|
585
|
+
sin = sout = None
|
586
|
+
for line in f:
|
587
|
+
# values are expressed in 4 kilo bytes, we want
|
588
|
+
# bytes instead
|
589
|
+
if line.startswith(b'pswpin'):
|
590
|
+
sin = int(line.split(b' ')[1]) * 4 * 1024
|
591
|
+
elif line.startswith(b'pswpout'):
|
592
|
+
sout = int(line.split(b' ')[1]) * 4 * 1024
|
593
|
+
if sin is not None and sout is not None:
|
594
|
+
break
|
595
|
+
else:
|
596
|
+
# we might get here when dealing with exotic Linux
|
597
|
+
# flavors, see:
|
598
|
+
# https://github.com/giampaolo/psutil/issues/313
|
599
|
+
msg = "'sin' and 'sout' swap memory stats couldn't "
|
600
|
+
msg += "be determined and were set to 0"
|
601
|
+
warnings.warn(msg, RuntimeWarning, stacklevel=2)
|
602
|
+
sin = sout = 0
|
603
|
+
return _common.sswap(total, used, free, percent, sin, sout)
|
604
|
+
|
605
|
+
|
606
|
+
# =====================================================================
|
607
|
+
# --- CPU
|
608
|
+
# =====================================================================
|
609
|
+
|
610
|
+
|
611
|
+
def cpu_times():
|
612
|
+
"""Return a named tuple representing the following system-wide
|
613
|
+
CPU times:
|
614
|
+
(user, nice, system, idle, iowait, irq, softirq [steal, [guest,
|
615
|
+
[guest_nice]]])
|
616
|
+
Last 3 fields may not be available on all Linux kernel versions.
|
617
|
+
"""
|
618
|
+
procfs_path = get_procfs_path()
|
619
|
+
set_scputimes_ntuple(procfs_path)
|
620
|
+
with open_binary('%s/stat' % procfs_path) as f:
|
621
|
+
values = f.readline().split()
|
622
|
+
fields = values[1 : len(scputimes._fields) + 1]
|
623
|
+
fields = [float(x) / CLOCK_TICKS for x in fields]
|
624
|
+
return scputimes(*fields)
|
625
|
+
|
626
|
+
|
627
|
+
def per_cpu_times():
|
628
|
+
"""Return a list of namedtuple representing the CPU times
|
629
|
+
for every CPU available on the system.
|
630
|
+
"""
|
631
|
+
procfs_path = get_procfs_path()
|
632
|
+
set_scputimes_ntuple(procfs_path)
|
633
|
+
cpus = []
|
634
|
+
with open_binary('%s/stat' % procfs_path) as f:
|
635
|
+
# get rid of the first line which refers to system wide CPU stats
|
636
|
+
f.readline()
|
637
|
+
for line in f:
|
638
|
+
if line.startswith(b'cpu'):
|
639
|
+
values = line.split()
|
640
|
+
fields = values[1 : len(scputimes._fields) + 1]
|
641
|
+
fields = [float(x) / CLOCK_TICKS for x in fields]
|
642
|
+
entry = scputimes(*fields)
|
643
|
+
cpus.append(entry)
|
644
|
+
return cpus
|
645
|
+
|
646
|
+
|
647
|
+
def cpu_count_logical():
|
648
|
+
"""Return the number of logical CPUs in the system."""
|
649
|
+
try:
|
650
|
+
return os.sysconf("SC_NPROCESSORS_ONLN")
|
651
|
+
except ValueError:
|
652
|
+
# as a second fallback we try to parse /proc/cpuinfo
|
653
|
+
num = 0
|
654
|
+
with open_binary('%s/cpuinfo' % get_procfs_path()) as f:
|
655
|
+
for line in f:
|
656
|
+
if line.lower().startswith(b'processor'):
|
657
|
+
num += 1
|
658
|
+
|
659
|
+
# unknown format (e.g. amrel/sparc architectures), see:
|
660
|
+
# https://github.com/giampaolo/psutil/issues/200
|
661
|
+
# try to parse /proc/stat as a last resort
|
662
|
+
if num == 0:
|
663
|
+
search = re.compile(r'cpu\d')
|
664
|
+
with open_text('%s/stat' % get_procfs_path()) as f:
|
665
|
+
for line in f:
|
666
|
+
line = line.split(' ')[0]
|
667
|
+
if search.match(line):
|
668
|
+
num += 1
|
669
|
+
|
670
|
+
if num == 0:
|
671
|
+
# mimic os.cpu_count()
|
672
|
+
return None
|
673
|
+
return num
|
674
|
+
|
675
|
+
|
676
|
+
def cpu_count_cores():
|
677
|
+
"""Return the number of CPU cores in the system."""
|
678
|
+
# Method #1
|
679
|
+
ls = set()
|
680
|
+
# These 2 files are the same but */core_cpus_list is newer while
|
681
|
+
# */thread_siblings_list is deprecated and may disappear in the future.
|
682
|
+
# https://www.kernel.org/doc/Documentation/admin-guide/cputopology.rst
|
683
|
+
# https://github.com/giampaolo/psutil/pull/1727#issuecomment-707624964
|
684
|
+
# https://lkml.org/lkml/2019/2/26/41
|
685
|
+
p1 = "/sys/devices/system/cpu/cpu[0-9]*/topology/core_cpus_list"
|
686
|
+
p2 = "/sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list"
|
687
|
+
for path in glob.glob(p1) or glob.glob(p2):
|
688
|
+
with open_binary(path) as f:
|
689
|
+
ls.add(f.read().strip())
|
690
|
+
result = len(ls)
|
691
|
+
if result != 0:
|
692
|
+
return result
|
693
|
+
|
694
|
+
# Method #2
|
695
|
+
mapping = {}
|
696
|
+
current_info = {}
|
697
|
+
with open_binary('%s/cpuinfo' % get_procfs_path()) as f:
|
698
|
+
for line in f:
|
699
|
+
line = line.strip().lower()
|
700
|
+
if not line:
|
701
|
+
# new section
|
702
|
+
try:
|
703
|
+
mapping[current_info[b'physical id']] = current_info[
|
704
|
+
b'cpu cores'
|
705
|
+
]
|
706
|
+
except KeyError:
|
707
|
+
pass
|
708
|
+
current_info = {}
|
709
|
+
else:
|
710
|
+
# ongoing section
|
711
|
+
if line.startswith((b'physical id', b'cpu cores')):
|
712
|
+
key, value = line.split(b'\t:', 1)
|
713
|
+
current_info[key] = int(value)
|
714
|
+
|
715
|
+
result = sum(mapping.values())
|
716
|
+
return result or None # mimic os.cpu_count()
|
717
|
+
|
718
|
+
|
719
|
+
def cpu_stats():
|
720
|
+
"""Return various CPU stats as a named tuple."""
|
721
|
+
with open_binary('%s/stat' % get_procfs_path()) as f:
|
722
|
+
ctx_switches = None
|
723
|
+
interrupts = None
|
724
|
+
soft_interrupts = None
|
725
|
+
for line in f:
|
726
|
+
if line.startswith(b'ctxt'):
|
727
|
+
ctx_switches = int(line.split()[1])
|
728
|
+
elif line.startswith(b'intr'):
|
729
|
+
interrupts = int(line.split()[1])
|
730
|
+
elif line.startswith(b'softirq'):
|
731
|
+
soft_interrupts = int(line.split()[1])
|
732
|
+
if (
|
733
|
+
ctx_switches is not None
|
734
|
+
and soft_interrupts is not None
|
735
|
+
and interrupts is not None
|
736
|
+
):
|
737
|
+
break
|
738
|
+
syscalls = 0
|
739
|
+
return _common.scpustats(
|
740
|
+
ctx_switches, interrupts, soft_interrupts, syscalls
|
741
|
+
)
|
742
|
+
|
743
|
+
|
744
|
+
def _cpu_get_cpuinfo_freq():
|
745
|
+
"""Return current CPU frequency from cpuinfo if available."""
|
746
|
+
ret = []
|
747
|
+
with open_binary('%s/cpuinfo' % get_procfs_path()) as f:
|
748
|
+
for line in f:
|
749
|
+
if line.lower().startswith(b'cpu mhz'):
|
750
|
+
ret.append(float(line.split(b':', 1)[1]))
|
751
|
+
return ret
|
752
|
+
|
753
|
+
|
754
|
+
if os.path.exists("/sys/devices/system/cpu/cpufreq/policy0") or os.path.exists(
|
755
|
+
"/sys/devices/system/cpu/cpu0/cpufreq"
|
756
|
+
):
|
757
|
+
|
758
|
+
def cpu_freq():
|
759
|
+
"""Return frequency metrics for all CPUs.
|
760
|
+
Contrarily to other OSes, Linux updates these values in
|
761
|
+
real-time.
|
762
|
+
"""
|
763
|
+
cpuinfo_freqs = _cpu_get_cpuinfo_freq()
|
764
|
+
paths = glob.glob(
|
765
|
+
"/sys/devices/system/cpu/cpufreq/policy[0-9]*"
|
766
|
+
) or glob.glob("/sys/devices/system/cpu/cpu[0-9]*/cpufreq")
|
767
|
+
paths.sort(key=lambda x: int(re.search(r"[0-9]+", x).group()))
|
768
|
+
ret = []
|
769
|
+
pjoin = os.path.join
|
770
|
+
for i, path in enumerate(paths):
|
771
|
+
if len(paths) == len(cpuinfo_freqs):
|
772
|
+
# take cached value from cpuinfo if available, see:
|
773
|
+
# https://github.com/giampaolo/psutil/issues/1851
|
774
|
+
curr = cpuinfo_freqs[i] * 1000
|
775
|
+
else:
|
776
|
+
curr = bcat(pjoin(path, "scaling_cur_freq"), fallback=None)
|
777
|
+
if curr is None:
|
778
|
+
# Likely an old RedHat, see:
|
779
|
+
# https://github.com/giampaolo/psutil/issues/1071
|
780
|
+
curr = bcat(pjoin(path, "cpuinfo_cur_freq"), fallback=None)
|
781
|
+
if curr is None:
|
782
|
+
online_path = (
|
783
|
+
"/sys/devices/system/cpu/cpu{}/online".format(i)
|
784
|
+
)
|
785
|
+
# if cpu core is offline, set to all zeroes
|
786
|
+
if cat(online_path, fallback=None) == "0\n":
|
787
|
+
ret.append(_common.scpufreq(0.0, 0.0, 0.0))
|
788
|
+
continue
|
789
|
+
msg = "can't find current frequency file"
|
790
|
+
raise NotImplementedError(msg)
|
791
|
+
curr = int(curr) / 1000
|
792
|
+
max_ = int(bcat(pjoin(path, "scaling_max_freq"))) / 1000
|
793
|
+
min_ = int(bcat(pjoin(path, "scaling_min_freq"))) / 1000
|
794
|
+
ret.append(_common.scpufreq(curr, min_, max_))
|
795
|
+
return ret
|
796
|
+
|
797
|
+
else:
|
798
|
+
|
799
|
+
def cpu_freq():
|
800
|
+
"""Alternate implementation using /proc/cpuinfo.
|
801
|
+
min and max frequencies are not available and are set to None.
|
802
|
+
"""
|
803
|
+
return [_common.scpufreq(x, 0.0, 0.0) for x in _cpu_get_cpuinfo_freq()]
|
804
|
+
|
805
|
+
|
806
|
+
# =====================================================================
|
807
|
+
# --- network
|
808
|
+
# =====================================================================
|
809
|
+
|
810
|
+
|
811
|
+
net_if_addrs = cext_posix.net_if_addrs
|
812
|
+
|
813
|
+
|
814
|
+
class _Ipv6UnsupportedError(Exception):
|
815
|
+
pass
|
816
|
+
|
817
|
+
|
818
|
+
class NetConnections:
|
819
|
+
"""A wrapper on top of /proc/net/* files, retrieving per-process
|
820
|
+
and system-wide open connections (TCP, UDP, UNIX) similarly to
|
821
|
+
"netstat -an".
|
822
|
+
|
823
|
+
Note: in case of UNIX sockets we're only able to determine the
|
824
|
+
local endpoint/path, not the one it's connected to.
|
825
|
+
According to [1] it would be possible but not easily.
|
826
|
+
|
827
|
+
[1] http://serverfault.com/a/417946
|
828
|
+
"""
|
829
|
+
|
830
|
+
def __init__(self):
|
831
|
+
# The string represents the basename of the corresponding
|
832
|
+
# /proc/net/{proto_name} file.
|
833
|
+
tcp4 = ("tcp", socket.AF_INET, socket.SOCK_STREAM)
|
834
|
+
tcp6 = ("tcp6", socket.AF_INET6, socket.SOCK_STREAM)
|
835
|
+
udp4 = ("udp", socket.AF_INET, socket.SOCK_DGRAM)
|
836
|
+
udp6 = ("udp6", socket.AF_INET6, socket.SOCK_DGRAM)
|
837
|
+
unix = ("unix", socket.AF_UNIX, None)
|
838
|
+
self.tmap = {
|
839
|
+
"all": (tcp4, tcp6, udp4, udp6, unix),
|
840
|
+
"tcp": (tcp4, tcp6),
|
841
|
+
"tcp4": (tcp4,),
|
842
|
+
"tcp6": (tcp6,),
|
843
|
+
"udp": (udp4, udp6),
|
844
|
+
"udp4": (udp4,),
|
845
|
+
"udp6": (udp6,),
|
846
|
+
"unix": (unix,),
|
847
|
+
"inet": (tcp4, tcp6, udp4, udp6),
|
848
|
+
"inet4": (tcp4, udp4),
|
849
|
+
"inet6": (tcp6, udp6),
|
850
|
+
}
|
851
|
+
self._procfs_path = None
|
852
|
+
|
853
|
+
def get_proc_inodes(self, pid):
|
854
|
+
inodes = defaultdict(list)
|
855
|
+
for fd in os.listdir("%s/%s/fd" % (self._procfs_path, pid)):
|
856
|
+
try:
|
857
|
+
inode = readlink("%s/%s/fd/%s" % (self._procfs_path, pid, fd))
|
858
|
+
except (FileNotFoundError, ProcessLookupError):
|
859
|
+
# ENOENT == file which is gone in the meantime;
|
860
|
+
# os.stat('/proc/%s' % self.pid) will be done later
|
861
|
+
# to force NSP (if it's the case)
|
862
|
+
continue
|
863
|
+
except OSError as err:
|
864
|
+
if err.errno == errno.EINVAL:
|
865
|
+
# not a link
|
866
|
+
continue
|
867
|
+
if err.errno == errno.ENAMETOOLONG:
|
868
|
+
# file name too long
|
869
|
+
debug(err)
|
870
|
+
continue
|
871
|
+
raise
|
872
|
+
else:
|
873
|
+
if inode.startswith('socket:['):
|
874
|
+
# the process is using a socket
|
875
|
+
inode = inode[8:][:-1]
|
876
|
+
inodes[inode].append((pid, int(fd)))
|
877
|
+
return inodes
|
878
|
+
|
879
|
+
def get_all_inodes(self):
|
880
|
+
inodes = {}
|
881
|
+
for pid in pids():
|
882
|
+
try:
|
883
|
+
inodes.update(self.get_proc_inodes(pid))
|
884
|
+
except (FileNotFoundError, ProcessLookupError, PermissionError):
|
885
|
+
# os.listdir() is gonna raise a lot of access denied
|
886
|
+
# exceptions in case of unprivileged user; that's fine
|
887
|
+
# as we'll just end up returning a connection with PID
|
888
|
+
# and fd set to None anyway.
|
889
|
+
# Both netstat -an and lsof does the same so it's
|
890
|
+
# unlikely we can do any better.
|
891
|
+
# ENOENT just means a PID disappeared on us.
|
892
|
+
continue
|
893
|
+
return inodes
|
894
|
+
|
895
|
+
@staticmethod
|
896
|
+
def decode_address(addr, family):
|
897
|
+
"""Accept an "ip:port" address as displayed in /proc/net/*
|
898
|
+
and convert it into a human readable form, like:
|
899
|
+
|
900
|
+
"0500000A:0016" -> ("10.0.0.5", 22)
|
901
|
+
"0000000000000000FFFF00000100007F:9E49" -> ("::ffff:127.0.0.1", 40521)
|
902
|
+
|
903
|
+
The IP address portion is a little or big endian four-byte
|
904
|
+
hexadecimal number; that is, the least significant byte is listed
|
905
|
+
first, so we need to reverse the order of the bytes to convert it
|
906
|
+
to an IP address.
|
907
|
+
The port is represented as a two-byte hexadecimal number.
|
908
|
+
|
909
|
+
Reference:
|
910
|
+
http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html
|
911
|
+
"""
|
912
|
+
ip, port = addr.split(':')
|
913
|
+
port = int(port, 16)
|
914
|
+
# this usually refers to a local socket in listen mode with
|
915
|
+
# no end-points connected
|
916
|
+
if not port:
|
917
|
+
return ()
|
918
|
+
if PY3:
|
919
|
+
ip = ip.encode('ascii')
|
920
|
+
if family == socket.AF_INET:
|
921
|
+
# see: https://github.com/giampaolo/psutil/issues/201
|
922
|
+
if LITTLE_ENDIAN:
|
923
|
+
ip = socket.inet_ntop(family, base64.b16decode(ip)[::-1])
|
924
|
+
else:
|
925
|
+
ip = socket.inet_ntop(family, base64.b16decode(ip))
|
926
|
+
else: # IPv6
|
927
|
+
ip = base64.b16decode(ip)
|
928
|
+
try:
|
929
|
+
# see: https://github.com/giampaolo/psutil/issues/201
|
930
|
+
if LITTLE_ENDIAN:
|
931
|
+
ip = socket.inet_ntop(
|
932
|
+
socket.AF_INET6,
|
933
|
+
struct.pack('>4I', *struct.unpack('<4I', ip)),
|
934
|
+
)
|
935
|
+
else:
|
936
|
+
ip = socket.inet_ntop(
|
937
|
+
socket.AF_INET6,
|
938
|
+
struct.pack('<4I', *struct.unpack('<4I', ip)),
|
939
|
+
)
|
940
|
+
except ValueError:
|
941
|
+
# see: https://github.com/giampaolo/psutil/issues/623
|
942
|
+
if not supports_ipv6():
|
943
|
+
raise _Ipv6UnsupportedError
|
944
|
+
else:
|
945
|
+
raise
|
946
|
+
return _common.addr(ip, port)
|
947
|
+
|
948
|
+
@staticmethod
|
949
|
+
def process_inet(file, family, type_, inodes, filter_pid=None):
|
950
|
+
"""Parse /proc/net/tcp* and /proc/net/udp* files."""
|
951
|
+
if file.endswith('6') and not os.path.exists(file):
|
952
|
+
# IPv6 not supported
|
953
|
+
return
|
954
|
+
with open_text(file) as f:
|
955
|
+
f.readline() # skip the first line
|
956
|
+
for lineno, line in enumerate(f, 1):
|
957
|
+
try:
|
958
|
+
_, laddr, raddr, status, _, _, _, _, _, inode = (
|
959
|
+
line.split()[:10]
|
960
|
+
)
|
961
|
+
except ValueError:
|
962
|
+
raise RuntimeError(
|
963
|
+
"error while parsing %s; malformed line %s %r"
|
964
|
+
% (file, lineno, line)
|
965
|
+
)
|
966
|
+
if inode in inodes:
|
967
|
+
# # We assume inet sockets are unique, so we error
|
968
|
+
# # out if there are multiple references to the
|
969
|
+
# # same inode. We won't do this for UNIX sockets.
|
970
|
+
# if len(inodes[inode]) > 1 and family != socket.AF_UNIX:
|
971
|
+
# raise ValueError("ambiguous inode with multiple "
|
972
|
+
# "PIDs references")
|
973
|
+
pid, fd = inodes[inode][0]
|
974
|
+
else:
|
975
|
+
pid, fd = None, -1
|
976
|
+
if filter_pid is not None and filter_pid != pid:
|
977
|
+
continue
|
978
|
+
else:
|
979
|
+
if type_ == socket.SOCK_STREAM:
|
980
|
+
status = TCP_STATUSES[status]
|
981
|
+
else:
|
982
|
+
status = _common.CONN_NONE
|
983
|
+
try:
|
984
|
+
laddr = NetConnections.decode_address(laddr, family)
|
985
|
+
raddr = NetConnections.decode_address(raddr, family)
|
986
|
+
except _Ipv6UnsupportedError:
|
987
|
+
continue
|
988
|
+
yield (fd, family, type_, laddr, raddr, status, pid)
|
989
|
+
|
990
|
+
@staticmethod
|
991
|
+
def process_unix(file, family, inodes, filter_pid=None):
|
992
|
+
"""Parse /proc/net/unix files."""
|
993
|
+
with open_text(file) as f:
|
994
|
+
f.readline() # skip the first line
|
995
|
+
for line in f:
|
996
|
+
tokens = line.split()
|
997
|
+
try:
|
998
|
+
_, _, _, _, type_, _, inode = tokens[0:7]
|
999
|
+
except ValueError:
|
1000
|
+
if ' ' not in line:
|
1001
|
+
# see: https://github.com/giampaolo/psutil/issues/766
|
1002
|
+
continue
|
1003
|
+
raise RuntimeError(
|
1004
|
+
"error while parsing %s; malformed line %r"
|
1005
|
+
% (file, line)
|
1006
|
+
)
|
1007
|
+
if inode in inodes: # noqa
|
1008
|
+
# With UNIX sockets we can have a single inode
|
1009
|
+
# referencing many file descriptors.
|
1010
|
+
pairs = inodes[inode]
|
1011
|
+
else:
|
1012
|
+
pairs = [(None, -1)]
|
1013
|
+
for pid, fd in pairs:
|
1014
|
+
if filter_pid is not None and filter_pid != pid:
|
1015
|
+
continue
|
1016
|
+
else:
|
1017
|
+
path = tokens[-1] if len(tokens) == 8 else ''
|
1018
|
+
type_ = _common.socktype_to_enum(int(type_))
|
1019
|
+
# XXX: determining the remote endpoint of a
|
1020
|
+
# UNIX socket on Linux is not possible, see:
|
1021
|
+
# https://serverfault.com/questions/252723/
|
1022
|
+
raddr = ""
|
1023
|
+
status = _common.CONN_NONE
|
1024
|
+
yield (fd, family, type_, path, raddr, status, pid)
|
1025
|
+
|
1026
|
+
def retrieve(self, kind, pid=None):
|
1027
|
+
if kind not in self.tmap:
|
1028
|
+
raise ValueError(
|
1029
|
+
"invalid %r kind argument; choose between %s"
|
1030
|
+
% (kind, ', '.join([repr(x) for x in self.tmap]))
|
1031
|
+
)
|
1032
|
+
self._procfs_path = get_procfs_path()
|
1033
|
+
if pid is not None:
|
1034
|
+
inodes = self.get_proc_inodes(pid)
|
1035
|
+
if not inodes:
|
1036
|
+
# no connections for this process
|
1037
|
+
return []
|
1038
|
+
else:
|
1039
|
+
inodes = self.get_all_inodes()
|
1040
|
+
ret = set()
|
1041
|
+
for proto_name, family, type_ in self.tmap[kind]:
|
1042
|
+
path = "%s/net/%s" % (self._procfs_path, proto_name)
|
1043
|
+
if family in (socket.AF_INET, socket.AF_INET6):
|
1044
|
+
ls = self.process_inet(
|
1045
|
+
path, family, type_, inodes, filter_pid=pid
|
1046
|
+
)
|
1047
|
+
else:
|
1048
|
+
ls = self.process_unix(path, family, inodes, filter_pid=pid)
|
1049
|
+
for fd, family, type_, laddr, raddr, status, bound_pid in ls:
|
1050
|
+
if pid:
|
1051
|
+
conn = _common.pconn(
|
1052
|
+
fd, family, type_, laddr, raddr, status
|
1053
|
+
)
|
1054
|
+
else:
|
1055
|
+
conn = _common.sconn(
|
1056
|
+
fd, family, type_, laddr, raddr, status, bound_pid
|
1057
|
+
)
|
1058
|
+
ret.add(conn)
|
1059
|
+
return list(ret)
|
1060
|
+
|
1061
|
+
|
1062
|
+
_net_connections = NetConnections()
|
1063
|
+
|
1064
|
+
|
1065
|
+
def net_connections(kind='inet'):
|
1066
|
+
"""Return system-wide open connections."""
|
1067
|
+
return _net_connections.retrieve(kind)
|
1068
|
+
|
1069
|
+
|
1070
|
+
def net_io_counters():
|
1071
|
+
"""Return network I/O statistics for every network interface
|
1072
|
+
installed on the system as a dict of raw tuples.
|
1073
|
+
"""
|
1074
|
+
with open_text("%s/net/dev" % get_procfs_path()) as f:
|
1075
|
+
lines = f.readlines()
|
1076
|
+
retdict = {}
|
1077
|
+
for line in lines[2:]:
|
1078
|
+
colon = line.rfind(':')
|
1079
|
+
assert colon > 0, repr(line)
|
1080
|
+
name = line[:colon].strip()
|
1081
|
+
fields = line[colon + 1 :].strip().split()
|
1082
|
+
|
1083
|
+
(
|
1084
|
+
# in
|
1085
|
+
bytes_recv,
|
1086
|
+
packets_recv,
|
1087
|
+
errin,
|
1088
|
+
dropin,
|
1089
|
+
_fifoin, # unused
|
1090
|
+
_framein, # unused
|
1091
|
+
_compressedin, # unused
|
1092
|
+
_multicastin, # unused
|
1093
|
+
# out
|
1094
|
+
bytes_sent,
|
1095
|
+
packets_sent,
|
1096
|
+
errout,
|
1097
|
+
dropout,
|
1098
|
+
_fifoout, # unused
|
1099
|
+
_collisionsout, # unused
|
1100
|
+
_carrierout, # unused
|
1101
|
+
_compressedout, # unused
|
1102
|
+
) = map(int, fields)
|
1103
|
+
|
1104
|
+
retdict[name] = (
|
1105
|
+
bytes_sent,
|
1106
|
+
bytes_recv,
|
1107
|
+
packets_sent,
|
1108
|
+
packets_recv,
|
1109
|
+
errin,
|
1110
|
+
errout,
|
1111
|
+
dropin,
|
1112
|
+
dropout,
|
1113
|
+
)
|
1114
|
+
return retdict
|
1115
|
+
|
1116
|
+
|
1117
|
+
def net_if_stats():
|
1118
|
+
"""Get NIC stats (isup, duplex, speed, mtu)."""
|
1119
|
+
duplex_map = {
|
1120
|
+
cext.DUPLEX_FULL: NIC_DUPLEX_FULL,
|
1121
|
+
cext.DUPLEX_HALF: NIC_DUPLEX_HALF,
|
1122
|
+
cext.DUPLEX_UNKNOWN: NIC_DUPLEX_UNKNOWN,
|
1123
|
+
}
|
1124
|
+
names = net_io_counters().keys()
|
1125
|
+
ret = {}
|
1126
|
+
for name in names:
|
1127
|
+
try:
|
1128
|
+
mtu = cext_posix.net_if_mtu(name)
|
1129
|
+
flags = cext_posix.net_if_flags(name)
|
1130
|
+
duplex, speed = cext.net_if_duplex_speed(name)
|
1131
|
+
except OSError as err:
|
1132
|
+
# https://github.com/giampaolo/psutil/issues/1279
|
1133
|
+
if err.errno != errno.ENODEV:
|
1134
|
+
raise
|
1135
|
+
else:
|
1136
|
+
debug(err)
|
1137
|
+
else:
|
1138
|
+
output_flags = ','.join(flags)
|
1139
|
+
isup = 'running' in flags
|
1140
|
+
ret[name] = _common.snicstats(
|
1141
|
+
isup, duplex_map[duplex], speed, mtu, output_flags
|
1142
|
+
)
|
1143
|
+
return ret
|
1144
|
+
|
1145
|
+
|
1146
|
+
# =====================================================================
|
1147
|
+
# --- disks
|
1148
|
+
# =====================================================================
|
1149
|
+
|
1150
|
+
|
1151
|
+
disk_usage = _psposix.disk_usage
|
1152
|
+
|
1153
|
+
|
1154
|
+
def disk_io_counters(perdisk=False):
|
1155
|
+
"""Return disk I/O statistics for every disk installed on the
|
1156
|
+
system as a dict of raw tuples.
|
1157
|
+
"""
|
1158
|
+
|
1159
|
+
def read_procfs():
|
1160
|
+
# OK, this is a bit confusing. The format of /proc/diskstats can
|
1161
|
+
# have 3 variations.
|
1162
|
+
# On Linux 2.4 each line has always 15 fields, e.g.:
|
1163
|
+
# "3 0 8 hda 8 8 8 8 8 8 8 8 8 8 8"
|
1164
|
+
# On Linux 2.6+ each line *usually* has 14 fields, and the disk
|
1165
|
+
# name is in another position, like this:
|
1166
|
+
# "3 0 hda 8 8 8 8 8 8 8 8 8 8 8"
|
1167
|
+
# ...unless (Linux 2.6) the line refers to a partition instead
|
1168
|
+
# of a disk, in which case the line has less fields (7):
|
1169
|
+
# "3 1 hda1 8 8 8 8"
|
1170
|
+
# 4.18+ has 4 fields added:
|
1171
|
+
# "3 0 hda 8 8 8 8 8 8 8 8 8 8 8 0 0 0 0"
|
1172
|
+
# 5.5 has 2 more fields.
|
1173
|
+
# See:
|
1174
|
+
# https://www.kernel.org/doc/Documentation/iostats.txt
|
1175
|
+
# https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats
|
1176
|
+
with open_text("%s/diskstats" % get_procfs_path()) as f:
|
1177
|
+
lines = f.readlines()
|
1178
|
+
for line in lines:
|
1179
|
+
fields = line.split()
|
1180
|
+
flen = len(fields)
|
1181
|
+
# fmt: off
|
1182
|
+
if flen == 15:
|
1183
|
+
# Linux 2.4
|
1184
|
+
name = fields[3]
|
1185
|
+
reads = int(fields[2])
|
1186
|
+
(reads_merged, rbytes, rtime, writes, writes_merged,
|
1187
|
+
wbytes, wtime, _, busy_time, _) = map(int, fields[4:14])
|
1188
|
+
elif flen == 14 or flen >= 18:
|
1189
|
+
# Linux 2.6+, line referring to a disk
|
1190
|
+
name = fields[2]
|
1191
|
+
(reads, reads_merged, rbytes, rtime, writes, writes_merged,
|
1192
|
+
wbytes, wtime, _, busy_time, _) = map(int, fields[3:14])
|
1193
|
+
elif flen == 7:
|
1194
|
+
# Linux 2.6+, line referring to a partition
|
1195
|
+
name = fields[2]
|
1196
|
+
reads, rbytes, writes, wbytes = map(int, fields[3:])
|
1197
|
+
rtime = wtime = reads_merged = writes_merged = busy_time = 0
|
1198
|
+
else:
|
1199
|
+
raise ValueError("not sure how to interpret line %r" % line)
|
1200
|
+
yield (name, reads, writes, rbytes, wbytes, rtime, wtime,
|
1201
|
+
reads_merged, writes_merged, busy_time)
|
1202
|
+
# fmt: on
|
1203
|
+
|
1204
|
+
def read_sysfs():
|
1205
|
+
for block in os.listdir('/sys/block'):
|
1206
|
+
for root, _, files in os.walk(os.path.join('/sys/block', block)):
|
1207
|
+
if 'stat' not in files:
|
1208
|
+
continue
|
1209
|
+
with open_text(os.path.join(root, 'stat')) as f:
|
1210
|
+
fields = f.read().strip().split()
|
1211
|
+
name = os.path.basename(root)
|
1212
|
+
# fmt: off
|
1213
|
+
(reads, reads_merged, rbytes, rtime, writes, writes_merged,
|
1214
|
+
wbytes, wtime, _, busy_time) = map(int, fields[:10])
|
1215
|
+
yield (name, reads, writes, rbytes, wbytes, rtime,
|
1216
|
+
wtime, reads_merged, writes_merged, busy_time)
|
1217
|
+
# fmt: on
|
1218
|
+
|
1219
|
+
if os.path.exists('%s/diskstats' % get_procfs_path()):
|
1220
|
+
gen = read_procfs()
|
1221
|
+
elif os.path.exists('/sys/block'):
|
1222
|
+
gen = read_sysfs()
|
1223
|
+
else:
|
1224
|
+
raise NotImplementedError(
|
1225
|
+
"%s/diskstats nor /sys/block filesystem are available on this "
|
1226
|
+
"system"
|
1227
|
+
% get_procfs_path()
|
1228
|
+
)
|
1229
|
+
|
1230
|
+
retdict = {}
|
1231
|
+
for entry in gen:
|
1232
|
+
# fmt: off
|
1233
|
+
(name, reads, writes, rbytes, wbytes, rtime, wtime, reads_merged,
|
1234
|
+
writes_merged, busy_time) = entry
|
1235
|
+
if not perdisk and not is_storage_device(name):
|
1236
|
+
# perdisk=False means we want to calculate totals so we skip
|
1237
|
+
# partitions (e.g. 'sda1', 'nvme0n1p1') and only include
|
1238
|
+
# base disk devices (e.g. 'sda', 'nvme0n1'). Base disks
|
1239
|
+
# include a total of all their partitions + some extra size
|
1240
|
+
# of their own:
|
1241
|
+
# $ cat /proc/diskstats
|
1242
|
+
# 259 0 sda 10485760 ...
|
1243
|
+
# 259 1 sda1 5186039 ...
|
1244
|
+
# 259 1 sda2 5082039 ...
|
1245
|
+
# See:
|
1246
|
+
# https://github.com/giampaolo/psutil/pull/1313
|
1247
|
+
continue
|
1248
|
+
|
1249
|
+
rbytes *= DISK_SECTOR_SIZE
|
1250
|
+
wbytes *= DISK_SECTOR_SIZE
|
1251
|
+
retdict[name] = (reads, writes, rbytes, wbytes, rtime, wtime,
|
1252
|
+
reads_merged, writes_merged, busy_time)
|
1253
|
+
# fmt: on
|
1254
|
+
|
1255
|
+
return retdict
|
1256
|
+
|
1257
|
+
|
1258
|
+
class RootFsDeviceFinder:
|
1259
|
+
"""disk_partitions() may return partitions with device == "/dev/root"
|
1260
|
+
or "rootfs". This container class uses different strategies to try to
|
1261
|
+
obtain the real device path. Resources:
|
1262
|
+
https://bootlin.com/blog/find-root-device/
|
1263
|
+
https://www.systutorials.com/how-to-find-the-disk-where-root-is-on-in-bash-on-linux/.
|
1264
|
+
"""
|
1265
|
+
|
1266
|
+
__slots__ = ['major', 'minor']
|
1267
|
+
|
1268
|
+
def __init__(self):
|
1269
|
+
dev = os.stat("/").st_dev
|
1270
|
+
self.major = os.major(dev)
|
1271
|
+
self.minor = os.minor(dev)
|
1272
|
+
|
1273
|
+
def ask_proc_partitions(self):
|
1274
|
+
with open_text("%s/partitions" % get_procfs_path()) as f:
|
1275
|
+
for line in f.readlines()[2:]:
|
1276
|
+
fields = line.split()
|
1277
|
+
if len(fields) < 4: # just for extra safety
|
1278
|
+
continue
|
1279
|
+
major = int(fields[0]) if fields[0].isdigit() else None
|
1280
|
+
minor = int(fields[1]) if fields[1].isdigit() else None
|
1281
|
+
name = fields[3]
|
1282
|
+
if major == self.major and minor == self.minor:
|
1283
|
+
if name: # just for extra safety
|
1284
|
+
return "/dev/%s" % name
|
1285
|
+
|
1286
|
+
def ask_sys_dev_block(self):
|
1287
|
+
path = "/sys/dev/block/%s:%s/uevent" % (self.major, self.minor)
|
1288
|
+
with open_text(path) as f:
|
1289
|
+
for line in f:
|
1290
|
+
if line.startswith("DEVNAME="):
|
1291
|
+
name = line.strip().rpartition("DEVNAME=")[2]
|
1292
|
+
if name: # just for extra safety
|
1293
|
+
return "/dev/%s" % name
|
1294
|
+
|
1295
|
+
def ask_sys_class_block(self):
|
1296
|
+
needle = "%s:%s" % (self.major, self.minor)
|
1297
|
+
files = glob.iglob("/sys/class/block/*/dev")
|
1298
|
+
for file in files:
|
1299
|
+
try:
|
1300
|
+
f = open_text(file)
|
1301
|
+
except FileNotFoundError: # race condition
|
1302
|
+
continue
|
1303
|
+
else:
|
1304
|
+
with f:
|
1305
|
+
data = f.read().strip()
|
1306
|
+
if data == needle:
|
1307
|
+
name = os.path.basename(os.path.dirname(file))
|
1308
|
+
return "/dev/%s" % name
|
1309
|
+
|
1310
|
+
def find(self):
|
1311
|
+
path = None
|
1312
|
+
if path is None:
|
1313
|
+
try:
|
1314
|
+
path = self.ask_proc_partitions()
|
1315
|
+
except (IOError, OSError) as err:
|
1316
|
+
debug(err)
|
1317
|
+
if path is None:
|
1318
|
+
try:
|
1319
|
+
path = self.ask_sys_dev_block()
|
1320
|
+
except (IOError, OSError) as err:
|
1321
|
+
debug(err)
|
1322
|
+
if path is None:
|
1323
|
+
try:
|
1324
|
+
path = self.ask_sys_class_block()
|
1325
|
+
except (IOError, OSError) as err:
|
1326
|
+
debug(err)
|
1327
|
+
# We use exists() because the "/dev/*" part of the path is hard
|
1328
|
+
# coded, so we want to be sure.
|
1329
|
+
if path is not None and os.path.exists(path):
|
1330
|
+
return path
|
1331
|
+
|
1332
|
+
|
1333
|
+
def disk_partitions(all=False):
|
1334
|
+
"""Return mounted disk partitions as a list of namedtuples."""
|
1335
|
+
fstypes = set()
|
1336
|
+
procfs_path = get_procfs_path()
|
1337
|
+
if not all:
|
1338
|
+
with open_text("%s/filesystems" % procfs_path) as f:
|
1339
|
+
for line in f:
|
1340
|
+
line = line.strip()
|
1341
|
+
if not line.startswith("nodev"):
|
1342
|
+
fstypes.add(line.strip())
|
1343
|
+
else:
|
1344
|
+
# ignore all lines starting with "nodev" except "nodev zfs"
|
1345
|
+
fstype = line.split("\t")[1]
|
1346
|
+
if fstype == "zfs":
|
1347
|
+
fstypes.add("zfs")
|
1348
|
+
|
1349
|
+
# See: https://github.com/giampaolo/psutil/issues/1307
|
1350
|
+
if procfs_path == "/proc" and os.path.isfile('/etc/mtab'):
|
1351
|
+
mounts_path = os.path.realpath("/etc/mtab")
|
1352
|
+
else:
|
1353
|
+
mounts_path = os.path.realpath("%s/self/mounts" % procfs_path)
|
1354
|
+
|
1355
|
+
retlist = []
|
1356
|
+
partitions = cext.disk_partitions(mounts_path)
|
1357
|
+
for partition in partitions:
|
1358
|
+
device, mountpoint, fstype, opts = partition
|
1359
|
+
if device == 'none':
|
1360
|
+
device = ''
|
1361
|
+
if device in ("/dev/root", "rootfs"):
|
1362
|
+
device = RootFsDeviceFinder().find() or device
|
1363
|
+
if not all:
|
1364
|
+
if not device or fstype not in fstypes:
|
1365
|
+
continue
|
1366
|
+
ntuple = _common.sdiskpart(device, mountpoint, fstype, opts)
|
1367
|
+
retlist.append(ntuple)
|
1368
|
+
|
1369
|
+
return retlist
|
1370
|
+
|
1371
|
+
|
1372
|
+
# =====================================================================
|
1373
|
+
# --- sensors
|
1374
|
+
# =====================================================================
|
1375
|
+
|
1376
|
+
|
1377
|
+
def sensors_temperatures():
|
1378
|
+
"""Return hardware (CPU and others) temperatures as a dict
|
1379
|
+
including hardware name, label, current, max and critical
|
1380
|
+
temperatures.
|
1381
|
+
|
1382
|
+
Implementation notes:
|
1383
|
+
- /sys/class/hwmon looks like the most recent interface to
|
1384
|
+
retrieve this info, and this implementation relies on it
|
1385
|
+
only (old distros will probably use something else)
|
1386
|
+
- lm-sensors on Ubuntu 16.04 relies on /sys/class/hwmon
|
1387
|
+
- /sys/class/thermal/thermal_zone* is another one but it's more
|
1388
|
+
difficult to parse
|
1389
|
+
"""
|
1390
|
+
ret = collections.defaultdict(list)
|
1391
|
+
basenames = glob.glob('/sys/class/hwmon/hwmon*/temp*_*')
|
1392
|
+
# CentOS has an intermediate /device directory:
|
1393
|
+
# https://github.com/giampaolo/psutil/issues/971
|
1394
|
+
# https://github.com/nicolargo/glances/issues/1060
|
1395
|
+
basenames.extend(glob.glob('/sys/class/hwmon/hwmon*/device/temp*_*'))
|
1396
|
+
basenames = sorted(set([x.split('_')[0] for x in basenames]))
|
1397
|
+
|
1398
|
+
# Only add the coretemp hwmon entries if they're not already in
|
1399
|
+
# /sys/class/hwmon/
|
1400
|
+
# https://github.com/giampaolo/psutil/issues/1708
|
1401
|
+
# https://github.com/giampaolo/psutil/pull/1648
|
1402
|
+
basenames2 = glob.glob(
|
1403
|
+
'/sys/devices/platform/coretemp.*/hwmon/hwmon*/temp*_*'
|
1404
|
+
)
|
1405
|
+
repl = re.compile('/sys/devices/platform/coretemp.*/hwmon/')
|
1406
|
+
for name in basenames2:
|
1407
|
+
altname = repl.sub('/sys/class/hwmon/', name)
|
1408
|
+
if altname not in basenames:
|
1409
|
+
basenames.append(name)
|
1410
|
+
|
1411
|
+
for base in basenames:
|
1412
|
+
try:
|
1413
|
+
path = base + '_input'
|
1414
|
+
current = float(bcat(path)) / 1000.0
|
1415
|
+
path = os.path.join(os.path.dirname(base), 'name')
|
1416
|
+
unit_name = cat(path).strip()
|
1417
|
+
except (IOError, OSError, ValueError):
|
1418
|
+
# A lot of things can go wrong here, so let's just skip the
|
1419
|
+
# whole entry. Sure thing is Linux's /sys/class/hwmon really
|
1420
|
+
# is a stinky broken mess.
|
1421
|
+
# https://github.com/giampaolo/psutil/issues/1009
|
1422
|
+
# https://github.com/giampaolo/psutil/issues/1101
|
1423
|
+
# https://github.com/giampaolo/psutil/issues/1129
|
1424
|
+
# https://github.com/giampaolo/psutil/issues/1245
|
1425
|
+
# https://github.com/giampaolo/psutil/issues/1323
|
1426
|
+
continue
|
1427
|
+
|
1428
|
+
high = bcat(base + '_max', fallback=None)
|
1429
|
+
critical = bcat(base + '_crit', fallback=None)
|
1430
|
+
label = cat(base + '_label', fallback='').strip()
|
1431
|
+
|
1432
|
+
if high is not None:
|
1433
|
+
try:
|
1434
|
+
high = float(high) / 1000.0
|
1435
|
+
except ValueError:
|
1436
|
+
high = None
|
1437
|
+
if critical is not None:
|
1438
|
+
try:
|
1439
|
+
critical = float(critical) / 1000.0
|
1440
|
+
except ValueError:
|
1441
|
+
critical = None
|
1442
|
+
|
1443
|
+
ret[unit_name].append((label, current, high, critical))
|
1444
|
+
|
1445
|
+
# Indication that no sensors were detected in /sys/class/hwmon/
|
1446
|
+
if not basenames:
|
1447
|
+
basenames = glob.glob('/sys/class/thermal/thermal_zone*')
|
1448
|
+
basenames = sorted(set(basenames))
|
1449
|
+
|
1450
|
+
for base in basenames:
|
1451
|
+
try:
|
1452
|
+
path = os.path.join(base, 'temp')
|
1453
|
+
current = float(bcat(path)) / 1000.0
|
1454
|
+
path = os.path.join(base, 'type')
|
1455
|
+
unit_name = cat(path).strip()
|
1456
|
+
except (IOError, OSError, ValueError) as err:
|
1457
|
+
debug(err)
|
1458
|
+
continue
|
1459
|
+
|
1460
|
+
trip_paths = glob.glob(base + '/trip_point*')
|
1461
|
+
trip_points = set([
|
1462
|
+
'_'.join(os.path.basename(p).split('_')[0:3])
|
1463
|
+
for p in trip_paths
|
1464
|
+
])
|
1465
|
+
critical = None
|
1466
|
+
high = None
|
1467
|
+
for trip_point in trip_points:
|
1468
|
+
path = os.path.join(base, trip_point + "_type")
|
1469
|
+
trip_type = cat(path, fallback='').strip()
|
1470
|
+
if trip_type == 'critical':
|
1471
|
+
critical = bcat(
|
1472
|
+
os.path.join(base, trip_point + "_temp"), fallback=None
|
1473
|
+
)
|
1474
|
+
elif trip_type == 'high':
|
1475
|
+
high = bcat(
|
1476
|
+
os.path.join(base, trip_point + "_temp"), fallback=None
|
1477
|
+
)
|
1478
|
+
|
1479
|
+
if high is not None:
|
1480
|
+
try:
|
1481
|
+
high = float(high) / 1000.0
|
1482
|
+
except ValueError:
|
1483
|
+
high = None
|
1484
|
+
if critical is not None:
|
1485
|
+
try:
|
1486
|
+
critical = float(critical) / 1000.0
|
1487
|
+
except ValueError:
|
1488
|
+
critical = None
|
1489
|
+
|
1490
|
+
ret[unit_name].append(('', current, high, critical))
|
1491
|
+
|
1492
|
+
return dict(ret)
|
1493
|
+
|
1494
|
+
|
1495
|
+
def sensors_fans():
|
1496
|
+
"""Return hardware fans info (for CPU and other peripherals) as a
|
1497
|
+
dict including hardware label and current speed.
|
1498
|
+
|
1499
|
+
Implementation notes:
|
1500
|
+
- /sys/class/hwmon looks like the most recent interface to
|
1501
|
+
retrieve this info, and this implementation relies on it
|
1502
|
+
only (old distros will probably use something else)
|
1503
|
+
- lm-sensors on Ubuntu 16.04 relies on /sys/class/hwmon
|
1504
|
+
"""
|
1505
|
+
ret = collections.defaultdict(list)
|
1506
|
+
basenames = glob.glob('/sys/class/hwmon/hwmon*/fan*_*')
|
1507
|
+
if not basenames:
|
1508
|
+
# CentOS has an intermediate /device directory:
|
1509
|
+
# https://github.com/giampaolo/psutil/issues/971
|
1510
|
+
basenames = glob.glob('/sys/class/hwmon/hwmon*/device/fan*_*')
|
1511
|
+
|
1512
|
+
basenames = sorted(set([x.split('_')[0] for x in basenames]))
|
1513
|
+
for base in basenames:
|
1514
|
+
try:
|
1515
|
+
current = int(bcat(base + '_input'))
|
1516
|
+
except (IOError, OSError) as err:
|
1517
|
+
debug(err)
|
1518
|
+
continue
|
1519
|
+
unit_name = cat(os.path.join(os.path.dirname(base), 'name')).strip()
|
1520
|
+
label = cat(base + '_label', fallback='').strip()
|
1521
|
+
ret[unit_name].append(_common.sfan(label, current))
|
1522
|
+
|
1523
|
+
return dict(ret)
|
1524
|
+
|
1525
|
+
|
1526
|
+
def sensors_battery():
|
1527
|
+
"""Return battery information.
|
1528
|
+
Implementation note: it appears /sys/class/power_supply/BAT0/
|
1529
|
+
directory structure may vary and provide files with the same
|
1530
|
+
meaning but under different names, see:
|
1531
|
+
https://github.com/giampaolo/psutil/issues/966.
|
1532
|
+
"""
|
1533
|
+
null = object()
|
1534
|
+
|
1535
|
+
def multi_bcat(*paths):
|
1536
|
+
"""Attempt to read the content of multiple files which may
|
1537
|
+
not exist. If none of them exist return None.
|
1538
|
+
"""
|
1539
|
+
for path in paths:
|
1540
|
+
ret = bcat(path, fallback=null)
|
1541
|
+
if ret != null:
|
1542
|
+
try:
|
1543
|
+
return int(ret)
|
1544
|
+
except ValueError:
|
1545
|
+
return ret.strip()
|
1546
|
+
return None
|
1547
|
+
|
1548
|
+
bats = [
|
1549
|
+
x
|
1550
|
+
for x in os.listdir(POWER_SUPPLY_PATH)
|
1551
|
+
if x.startswith('BAT') or 'battery' in x.lower()
|
1552
|
+
]
|
1553
|
+
if not bats:
|
1554
|
+
return None
|
1555
|
+
# Get the first available battery. Usually this is "BAT0", except
|
1556
|
+
# some rare exceptions:
|
1557
|
+
# https://github.com/giampaolo/psutil/issues/1238
|
1558
|
+
root = os.path.join(POWER_SUPPLY_PATH, sorted(bats)[0])
|
1559
|
+
|
1560
|
+
# Base metrics.
|
1561
|
+
energy_now = multi_bcat(root + "/energy_now", root + "/charge_now")
|
1562
|
+
power_now = multi_bcat(root + "/power_now", root + "/current_now")
|
1563
|
+
energy_full = multi_bcat(root + "/energy_full", root + "/charge_full")
|
1564
|
+
time_to_empty = multi_bcat(root + "/time_to_empty_now")
|
1565
|
+
|
1566
|
+
# Percent. If we have energy_full the percentage will be more
|
1567
|
+
# accurate compared to reading /capacity file (float vs. int).
|
1568
|
+
if energy_full is not None and energy_now is not None:
|
1569
|
+
try:
|
1570
|
+
percent = 100.0 * energy_now / energy_full
|
1571
|
+
except ZeroDivisionError:
|
1572
|
+
percent = 0.0
|
1573
|
+
else:
|
1574
|
+
percent = int(cat(root + "/capacity", fallback=-1))
|
1575
|
+
if percent == -1:
|
1576
|
+
return None
|
1577
|
+
|
1578
|
+
# Is AC power cable plugged in?
|
1579
|
+
# Note: AC0 is not always available and sometimes (e.g. CentOS7)
|
1580
|
+
# it's called "AC".
|
1581
|
+
power_plugged = None
|
1582
|
+
online = multi_bcat(
|
1583
|
+
os.path.join(POWER_SUPPLY_PATH, "AC0/online"),
|
1584
|
+
os.path.join(POWER_SUPPLY_PATH, "AC/online"),
|
1585
|
+
)
|
1586
|
+
if online is not None:
|
1587
|
+
power_plugged = online == 1
|
1588
|
+
else:
|
1589
|
+
status = cat(root + "/status", fallback="").strip().lower()
|
1590
|
+
if status == "discharging":
|
1591
|
+
power_plugged = False
|
1592
|
+
elif status in ("charging", "full"):
|
1593
|
+
power_plugged = True
|
1594
|
+
|
1595
|
+
# Seconds left.
|
1596
|
+
# Note to self: we may also calculate the charging ETA as per:
|
1597
|
+
# https://github.com/thialfihar/dotfiles/blob/
|
1598
|
+
# 013937745fd9050c30146290e8f963d65c0179e6/bin/battery.py#L55
|
1599
|
+
if power_plugged:
|
1600
|
+
secsleft = _common.POWER_TIME_UNLIMITED
|
1601
|
+
elif energy_now is not None and power_now is not None:
|
1602
|
+
try:
|
1603
|
+
secsleft = int(energy_now / power_now * 3600)
|
1604
|
+
except ZeroDivisionError:
|
1605
|
+
secsleft = _common.POWER_TIME_UNKNOWN
|
1606
|
+
elif time_to_empty is not None:
|
1607
|
+
secsleft = int(time_to_empty * 60)
|
1608
|
+
if secsleft < 0:
|
1609
|
+
secsleft = _common.POWER_TIME_UNKNOWN
|
1610
|
+
else:
|
1611
|
+
secsleft = _common.POWER_TIME_UNKNOWN
|
1612
|
+
|
1613
|
+
return _common.sbattery(percent, secsleft, power_plugged)
|
1614
|
+
|
1615
|
+
|
1616
|
+
# =====================================================================
|
1617
|
+
# --- other system functions
|
1618
|
+
# =====================================================================
|
1619
|
+
|
1620
|
+
|
1621
|
+
def users():
|
1622
|
+
"""Return currently connected users as a list of namedtuples."""
|
1623
|
+
retlist = []
|
1624
|
+
rawlist = cext.users()
|
1625
|
+
for item in rawlist:
|
1626
|
+
user, tty, hostname, tstamp, pid = item
|
1627
|
+
nt = _common.suser(user, tty or None, hostname, tstamp, pid)
|
1628
|
+
retlist.append(nt)
|
1629
|
+
return retlist
|
1630
|
+
|
1631
|
+
|
1632
|
+
def boot_time():
|
1633
|
+
"""Return the system boot time expressed in seconds since the epoch."""
|
1634
|
+
global BOOT_TIME
|
1635
|
+
path = '%s/stat' % get_procfs_path()
|
1636
|
+
with open_binary(path) as f:
|
1637
|
+
for line in f:
|
1638
|
+
if line.startswith(b'btime'):
|
1639
|
+
ret = float(line.strip().split()[1])
|
1640
|
+
BOOT_TIME = ret
|
1641
|
+
return ret
|
1642
|
+
raise RuntimeError("line 'btime' not found in %s" % path)
|
1643
|
+
|
1644
|
+
|
1645
|
+
# =====================================================================
|
1646
|
+
# --- processes
|
1647
|
+
# =====================================================================
|
1648
|
+
|
1649
|
+
|
1650
|
+
def pids():
|
1651
|
+
"""Returns a list of PIDs currently running on the system."""
|
1652
|
+
return [int(x) for x in os.listdir(b(get_procfs_path())) if x.isdigit()]
|
1653
|
+
|
1654
|
+
|
1655
|
+
def pid_exists(pid):
|
1656
|
+
"""Check for the existence of a unix PID. Linux TIDs are not
|
1657
|
+
supported (always return False).
|
1658
|
+
"""
|
1659
|
+
if not _psposix.pid_exists(pid):
|
1660
|
+
return False
|
1661
|
+
else:
|
1662
|
+
# Linux's apparently does not distinguish between PIDs and TIDs
|
1663
|
+
# (thread IDs).
|
1664
|
+
# listdir("/proc") won't show any TID (only PIDs) but
|
1665
|
+
# os.stat("/proc/{tid}") will succeed if {tid} exists.
|
1666
|
+
# os.kill() can also be passed a TID. This is quite confusing.
|
1667
|
+
# In here we want to enforce this distinction and support PIDs
|
1668
|
+
# only, see:
|
1669
|
+
# https://github.com/giampaolo/psutil/issues/687
|
1670
|
+
try:
|
1671
|
+
# Note: already checked that this is faster than using a
|
1672
|
+
# regular expr. Also (a lot) faster than doing
|
1673
|
+
# 'return pid in pids()'
|
1674
|
+
path = "%s/%s/status" % (get_procfs_path(), pid)
|
1675
|
+
with open_binary(path) as f:
|
1676
|
+
for line in f:
|
1677
|
+
if line.startswith(b"Tgid:"):
|
1678
|
+
tgid = int(line.split()[1])
|
1679
|
+
# If tgid and pid are the same then we're
|
1680
|
+
# dealing with a process PID.
|
1681
|
+
return tgid == pid
|
1682
|
+
raise ValueError("'Tgid' line not found in %s" % path)
|
1683
|
+
except (EnvironmentError, ValueError):
|
1684
|
+
return pid in pids()
|
1685
|
+
|
1686
|
+
|
1687
|
+
def ppid_map():
|
1688
|
+
"""Obtain a {pid: ppid, ...} dict for all running processes in
|
1689
|
+
one shot. Used to speed up Process.children().
|
1690
|
+
"""
|
1691
|
+
ret = {}
|
1692
|
+
procfs_path = get_procfs_path()
|
1693
|
+
for pid in pids():
|
1694
|
+
try:
|
1695
|
+
with open_binary("%s/%s/stat" % (procfs_path, pid)) as f:
|
1696
|
+
data = f.read()
|
1697
|
+
except (FileNotFoundError, ProcessLookupError):
|
1698
|
+
# Note: we should be able to access /stat for all processes
|
1699
|
+
# aka it's unlikely we'll bump into EPERM, which is good.
|
1700
|
+
pass
|
1701
|
+
else:
|
1702
|
+
rpar = data.rfind(b')')
|
1703
|
+
dset = data[rpar + 2 :].split()
|
1704
|
+
ppid = int(dset[1])
|
1705
|
+
ret[pid] = ppid
|
1706
|
+
return ret
|
1707
|
+
|
1708
|
+
|
1709
|
+
def wrap_exceptions(fun):
|
1710
|
+
"""Decorator which translates bare OSError and IOError exceptions
|
1711
|
+
into NoSuchProcess and AccessDenied.
|
1712
|
+
"""
|
1713
|
+
|
1714
|
+
@functools.wraps(fun)
|
1715
|
+
def wrapper(self, *args, **kwargs):
|
1716
|
+
try:
|
1717
|
+
return fun(self, *args, **kwargs)
|
1718
|
+
except PermissionError:
|
1719
|
+
raise AccessDenied(self.pid, self._name)
|
1720
|
+
except ProcessLookupError:
|
1721
|
+
self._raise_if_zombie()
|
1722
|
+
raise NoSuchProcess(self.pid, self._name)
|
1723
|
+
except FileNotFoundError:
|
1724
|
+
self._raise_if_zombie()
|
1725
|
+
if not os.path.exists("%s/%s" % (self._procfs_path, self.pid)):
|
1726
|
+
raise NoSuchProcess(self.pid, self._name)
|
1727
|
+
raise
|
1728
|
+
|
1729
|
+
return wrapper
|
1730
|
+
|
1731
|
+
|
1732
|
+
class Process:
|
1733
|
+
"""Linux process implementation."""
|
1734
|
+
|
1735
|
+
__slots__ = ["_cache", "_name", "_ppid", "_procfs_path", "pid"]
|
1736
|
+
|
1737
|
+
def __init__(self, pid):
|
1738
|
+
self.pid = pid
|
1739
|
+
self._name = None
|
1740
|
+
self._ppid = None
|
1741
|
+
self._procfs_path = get_procfs_path()
|
1742
|
+
|
1743
|
+
def _is_zombie(self):
|
1744
|
+
# Note: most of the times Linux is able to return info about the
|
1745
|
+
# process even if it's a zombie, and /proc/{pid} will exist.
|
1746
|
+
# There are some exceptions though, like exe(), cmdline() and
|
1747
|
+
# memory_maps(). In these cases /proc/{pid}/{file} exists but
|
1748
|
+
# it's empty. Instead of returning a "null" value we'll raise an
|
1749
|
+
# exception.
|
1750
|
+
try:
|
1751
|
+
data = bcat("%s/%s/stat" % (self._procfs_path, self.pid))
|
1752
|
+
except (IOError, OSError):
|
1753
|
+
return False
|
1754
|
+
else:
|
1755
|
+
rpar = data.rfind(b')')
|
1756
|
+
status = data[rpar + 2 : rpar + 3]
|
1757
|
+
return status == b"Z"
|
1758
|
+
|
1759
|
+
def _raise_if_zombie(self):
|
1760
|
+
if self._is_zombie():
|
1761
|
+
raise ZombieProcess(self.pid, self._name, self._ppid)
|
1762
|
+
|
1763
|
+
def _raise_if_not_alive(self):
|
1764
|
+
"""Raise NSP if the process disappeared on us."""
|
1765
|
+
# For those C function who do not raise NSP, possibly returning
|
1766
|
+
# incorrect or incomplete result.
|
1767
|
+
os.stat('%s/%s' % (self._procfs_path, self.pid))
|
1768
|
+
|
1769
|
+
@wrap_exceptions
|
1770
|
+
@memoize_when_activated
|
1771
|
+
def _parse_stat_file(self):
|
1772
|
+
"""Parse /proc/{pid}/stat file and return a dict with various
|
1773
|
+
process info.
|
1774
|
+
Using "man proc" as a reference: where "man proc" refers to
|
1775
|
+
position N always subtract 3 (e.g ppid position 4 in
|
1776
|
+
'man proc' == position 1 in here).
|
1777
|
+
The return value is cached in case oneshot() ctx manager is
|
1778
|
+
in use.
|
1779
|
+
"""
|
1780
|
+
data = bcat("%s/%s/stat" % (self._procfs_path, self.pid))
|
1781
|
+
# Process name is between parentheses. It can contain spaces and
|
1782
|
+
# other parentheses. This is taken into account by looking for
|
1783
|
+
# the first occurrence of "(" and the last occurrence of ")".
|
1784
|
+
rpar = data.rfind(b')')
|
1785
|
+
name = data[data.find(b'(') + 1 : rpar]
|
1786
|
+
fields = data[rpar + 2 :].split()
|
1787
|
+
|
1788
|
+
ret = {}
|
1789
|
+
ret['name'] = name
|
1790
|
+
ret['status'] = fields[0]
|
1791
|
+
ret['ppid'] = fields[1]
|
1792
|
+
ret['ttynr'] = fields[4]
|
1793
|
+
ret['utime'] = fields[11]
|
1794
|
+
ret['stime'] = fields[12]
|
1795
|
+
ret['children_utime'] = fields[13]
|
1796
|
+
ret['children_stime'] = fields[14]
|
1797
|
+
ret['create_time'] = fields[19]
|
1798
|
+
ret['cpu_num'] = fields[36]
|
1799
|
+
try:
|
1800
|
+
ret['blkio_ticks'] = fields[39] # aka 'delayacct_blkio_ticks'
|
1801
|
+
except IndexError:
|
1802
|
+
# https://github.com/giampaolo/psutil/issues/2455
|
1803
|
+
debug("can't get blkio_ticks, set iowait to 0")
|
1804
|
+
ret['blkio_ticks'] = 0
|
1805
|
+
|
1806
|
+
return ret
|
1807
|
+
|
1808
|
+
@wrap_exceptions
|
1809
|
+
@memoize_when_activated
|
1810
|
+
def _read_status_file(self):
|
1811
|
+
"""Read /proc/{pid}/stat file and return its content.
|
1812
|
+
The return value is cached in case oneshot() ctx manager is
|
1813
|
+
in use.
|
1814
|
+
"""
|
1815
|
+
with open_binary("%s/%s/status" % (self._procfs_path, self.pid)) as f:
|
1816
|
+
return f.read()
|
1817
|
+
|
1818
|
+
@wrap_exceptions
|
1819
|
+
@memoize_when_activated
|
1820
|
+
def _read_smaps_file(self):
|
1821
|
+
with open_binary("%s/%s/smaps" % (self._procfs_path, self.pid)) as f:
|
1822
|
+
return f.read().strip()
|
1823
|
+
|
1824
|
+
def oneshot_enter(self):
|
1825
|
+
self._parse_stat_file.cache_activate(self)
|
1826
|
+
self._read_status_file.cache_activate(self)
|
1827
|
+
self._read_smaps_file.cache_activate(self)
|
1828
|
+
|
1829
|
+
def oneshot_exit(self):
|
1830
|
+
self._parse_stat_file.cache_deactivate(self)
|
1831
|
+
self._read_status_file.cache_deactivate(self)
|
1832
|
+
self._read_smaps_file.cache_deactivate(self)
|
1833
|
+
|
1834
|
+
@wrap_exceptions
|
1835
|
+
def name(self):
|
1836
|
+
name = self._parse_stat_file()['name']
|
1837
|
+
if PY3:
|
1838
|
+
name = decode(name)
|
1839
|
+
# XXX - gets changed later and probably needs refactoring
|
1840
|
+
return name
|
1841
|
+
|
1842
|
+
@wrap_exceptions
|
1843
|
+
def exe(self):
|
1844
|
+
try:
|
1845
|
+
return readlink("%s/%s/exe" % (self._procfs_path, self.pid))
|
1846
|
+
except (FileNotFoundError, ProcessLookupError):
|
1847
|
+
self._raise_if_zombie()
|
1848
|
+
# no such file error; might be raised also if the
|
1849
|
+
# path actually exists for system processes with
|
1850
|
+
# low pids (about 0-20)
|
1851
|
+
if os.path.lexists("%s/%s" % (self._procfs_path, self.pid)):
|
1852
|
+
return ""
|
1853
|
+
raise
|
1854
|
+
|
1855
|
+
@wrap_exceptions
|
1856
|
+
def cmdline(self):
|
1857
|
+
with open_text("%s/%s/cmdline" % (self._procfs_path, self.pid)) as f:
|
1858
|
+
data = f.read()
|
1859
|
+
if not data:
|
1860
|
+
# may happen in case of zombie process
|
1861
|
+
self._raise_if_zombie()
|
1862
|
+
return []
|
1863
|
+
# 'man proc' states that args are separated by null bytes '\0'
|
1864
|
+
# and last char is supposed to be a null byte. Nevertheless
|
1865
|
+
# some processes may change their cmdline after being started
|
1866
|
+
# (via setproctitle() or similar), they are usually not
|
1867
|
+
# compliant with this rule and use spaces instead. Google
|
1868
|
+
# Chrome process is an example. See:
|
1869
|
+
# https://github.com/giampaolo/psutil/issues/1179
|
1870
|
+
sep = '\x00' if data.endswith('\x00') else ' '
|
1871
|
+
if data.endswith(sep):
|
1872
|
+
data = data[:-1]
|
1873
|
+
cmdline = data.split(sep)
|
1874
|
+
# Sometimes last char is a null byte '\0' but the args are
|
1875
|
+
# separated by spaces, see: https://github.com/giampaolo/psutil/
|
1876
|
+
# issues/1179#issuecomment-552984549
|
1877
|
+
if sep == '\x00' and len(cmdline) == 1 and ' ' in data:
|
1878
|
+
cmdline = data.split(' ')
|
1879
|
+
return cmdline
|
1880
|
+
|
1881
|
+
@wrap_exceptions
|
1882
|
+
def environ(self):
|
1883
|
+
with open_text("%s/%s/environ" % (self._procfs_path, self.pid)) as f:
|
1884
|
+
data = f.read()
|
1885
|
+
return parse_environ_block(data)
|
1886
|
+
|
1887
|
+
@wrap_exceptions
|
1888
|
+
def terminal(self):
|
1889
|
+
tty_nr = int(self._parse_stat_file()['ttynr'])
|
1890
|
+
tmap = _psposix.get_terminal_map()
|
1891
|
+
try:
|
1892
|
+
return tmap[tty_nr]
|
1893
|
+
except KeyError:
|
1894
|
+
return None
|
1895
|
+
|
1896
|
+
# May not be available on old kernels.
|
1897
|
+
if os.path.exists('/proc/%s/io' % os.getpid()):
|
1898
|
+
|
1899
|
+
@wrap_exceptions
|
1900
|
+
def io_counters(self):
|
1901
|
+
fname = "%s/%s/io" % (self._procfs_path, self.pid)
|
1902
|
+
fields = {}
|
1903
|
+
with open_binary(fname) as f:
|
1904
|
+
for line in f:
|
1905
|
+
# https://github.com/giampaolo/psutil/issues/1004
|
1906
|
+
line = line.strip()
|
1907
|
+
if line:
|
1908
|
+
try:
|
1909
|
+
name, value = line.split(b': ')
|
1910
|
+
except ValueError:
|
1911
|
+
# https://github.com/giampaolo/psutil/issues/1004
|
1912
|
+
continue
|
1913
|
+
else:
|
1914
|
+
fields[name] = int(value)
|
1915
|
+
if not fields:
|
1916
|
+
raise RuntimeError("%s file was empty" % fname)
|
1917
|
+
try:
|
1918
|
+
return pio(
|
1919
|
+
fields[b'syscr'], # read syscalls
|
1920
|
+
fields[b'syscw'], # write syscalls
|
1921
|
+
fields[b'read_bytes'], # read bytes
|
1922
|
+
fields[b'write_bytes'], # write bytes
|
1923
|
+
fields[b'rchar'], # read chars
|
1924
|
+
fields[b'wchar'], # write chars
|
1925
|
+
)
|
1926
|
+
except KeyError as err:
|
1927
|
+
raise ValueError(
|
1928
|
+
"%r field was not found in %s; found fields are %r"
|
1929
|
+
% (err.args[0], fname, fields)
|
1930
|
+
)
|
1931
|
+
|
1932
|
+
@wrap_exceptions
|
1933
|
+
def cpu_times(self):
|
1934
|
+
values = self._parse_stat_file()
|
1935
|
+
utime = float(values['utime']) / CLOCK_TICKS
|
1936
|
+
stime = float(values['stime']) / CLOCK_TICKS
|
1937
|
+
children_utime = float(values['children_utime']) / CLOCK_TICKS
|
1938
|
+
children_stime = float(values['children_stime']) / CLOCK_TICKS
|
1939
|
+
iowait = float(values['blkio_ticks']) / CLOCK_TICKS
|
1940
|
+
return pcputimes(utime, stime, children_utime, children_stime, iowait)
|
1941
|
+
|
1942
|
+
@wrap_exceptions
|
1943
|
+
def cpu_num(self):
|
1944
|
+
"""What CPU the process is on."""
|
1945
|
+
return int(self._parse_stat_file()['cpu_num'])
|
1946
|
+
|
1947
|
+
@wrap_exceptions
|
1948
|
+
def wait(self, timeout=None):
|
1949
|
+
return _psposix.wait_pid(self.pid, timeout, self._name)
|
1950
|
+
|
1951
|
+
@wrap_exceptions
|
1952
|
+
def create_time(self):
|
1953
|
+
ctime = float(self._parse_stat_file()['create_time'])
|
1954
|
+
# According to documentation, starttime is in field 21 and the
|
1955
|
+
# unit is jiffies (clock ticks).
|
1956
|
+
# We first divide it for clock ticks and then add uptime returning
|
1957
|
+
# seconds since the epoch.
|
1958
|
+
# Also use cached value if available.
|
1959
|
+
bt = BOOT_TIME or boot_time()
|
1960
|
+
return (ctime / CLOCK_TICKS) + bt
|
1961
|
+
|
1962
|
+
@wrap_exceptions
|
1963
|
+
def memory_info(self):
|
1964
|
+
# ============================================================
|
1965
|
+
# | FIELD | DESCRIPTION | AKA | TOP |
|
1966
|
+
# ============================================================
|
1967
|
+
# | rss | resident set size | | RES |
|
1968
|
+
# | vms | total program size | size | VIRT |
|
1969
|
+
# | shared | shared pages (from shared mappings) | | SHR |
|
1970
|
+
# | text | text ('code') | trs | CODE |
|
1971
|
+
# | lib | library (unused in Linux 2.6) | lrs | |
|
1972
|
+
# | data | data + stack | drs | DATA |
|
1973
|
+
# | dirty | dirty pages (unused in Linux 2.6) | dt | |
|
1974
|
+
# ============================================================
|
1975
|
+
with open_binary("%s/%s/statm" % (self._procfs_path, self.pid)) as f:
|
1976
|
+
vms, rss, shared, text, lib, data, dirty = (
|
1977
|
+
int(x) * PAGESIZE for x in f.readline().split()[:7]
|
1978
|
+
)
|
1979
|
+
return pmem(rss, vms, shared, text, lib, data, dirty)
|
1980
|
+
|
1981
|
+
if HAS_PROC_SMAPS_ROLLUP or HAS_PROC_SMAPS:
|
1982
|
+
|
1983
|
+
def _parse_smaps_rollup(self):
|
1984
|
+
# /proc/pid/smaps_rollup was added to Linux in 2017. Faster
|
1985
|
+
# than /proc/pid/smaps. It reports higher PSS than */smaps
|
1986
|
+
# (from 1k up to 200k higher; tested against all processes).
|
1987
|
+
# IMPORTANT: /proc/pid/smaps_rollup is weird, because it
|
1988
|
+
# raises ESRCH / ENOENT for many PIDs, even if they're alive
|
1989
|
+
# (also as root). In that case we'll use /proc/pid/smaps as
|
1990
|
+
# fallback, which is slower but has a +50% success rate
|
1991
|
+
# compared to /proc/pid/smaps_rollup.
|
1992
|
+
uss = pss = swap = 0
|
1993
|
+
with open_binary(
|
1994
|
+
"{}/{}/smaps_rollup".format(self._procfs_path, self.pid)
|
1995
|
+
) as f:
|
1996
|
+
for line in f:
|
1997
|
+
if line.startswith(b"Private_"):
|
1998
|
+
# Private_Clean, Private_Dirty, Private_Hugetlb
|
1999
|
+
uss += int(line.split()[1]) * 1024
|
2000
|
+
elif line.startswith(b"Pss:"):
|
2001
|
+
pss = int(line.split()[1]) * 1024
|
2002
|
+
elif line.startswith(b"Swap:"):
|
2003
|
+
swap = int(line.split()[1]) * 1024
|
2004
|
+
return (uss, pss, swap)
|
2005
|
+
|
2006
|
+
@wrap_exceptions
|
2007
|
+
def _parse_smaps(
|
2008
|
+
self,
|
2009
|
+
# Gets Private_Clean, Private_Dirty, Private_Hugetlb.
|
2010
|
+
_private_re=re.compile(br"\nPrivate.*:\s+(\d+)"),
|
2011
|
+
_pss_re=re.compile(br"\nPss\:\s+(\d+)"),
|
2012
|
+
_swap_re=re.compile(br"\nSwap\:\s+(\d+)"),
|
2013
|
+
):
|
2014
|
+
# /proc/pid/smaps does not exist on kernels < 2.6.14 or if
|
2015
|
+
# CONFIG_MMU kernel configuration option is not enabled.
|
2016
|
+
|
2017
|
+
# Note: using 3 regexes is faster than reading the file
|
2018
|
+
# line by line.
|
2019
|
+
# XXX: on Python 3 the 2 regexes are 30% slower than on
|
2020
|
+
# Python 2 though. Figure out why.
|
2021
|
+
#
|
2022
|
+
# You might be tempted to calculate USS by subtracting
|
2023
|
+
# the "shared" value from the "resident" value in
|
2024
|
+
# /proc/<pid>/statm. But at least on Linux, statm's "shared"
|
2025
|
+
# value actually counts pages backed by files, which has
|
2026
|
+
# little to do with whether the pages are actually shared.
|
2027
|
+
# /proc/self/smaps on the other hand appears to give us the
|
2028
|
+
# correct information.
|
2029
|
+
smaps_data = self._read_smaps_file()
|
2030
|
+
# Note: smaps file can be empty for certain processes.
|
2031
|
+
# The code below will not crash though and will result to 0.
|
2032
|
+
uss = sum(map(int, _private_re.findall(smaps_data))) * 1024
|
2033
|
+
pss = sum(map(int, _pss_re.findall(smaps_data))) * 1024
|
2034
|
+
swap = sum(map(int, _swap_re.findall(smaps_data))) * 1024
|
2035
|
+
return (uss, pss, swap)
|
2036
|
+
|
2037
|
+
@wrap_exceptions
|
2038
|
+
def memory_full_info(self):
|
2039
|
+
if HAS_PROC_SMAPS_ROLLUP: # faster
|
2040
|
+
try:
|
2041
|
+
uss, pss, swap = self._parse_smaps_rollup()
|
2042
|
+
except (ProcessLookupError, FileNotFoundError):
|
2043
|
+
uss, pss, swap = self._parse_smaps()
|
2044
|
+
else:
|
2045
|
+
uss, pss, swap = self._parse_smaps()
|
2046
|
+
basic_mem = self.memory_info()
|
2047
|
+
return pfullmem(*basic_mem + (uss, pss, swap))
|
2048
|
+
|
2049
|
+
else:
|
2050
|
+
memory_full_info = memory_info
|
2051
|
+
|
2052
|
+
if HAS_PROC_SMAPS:
|
2053
|
+
|
2054
|
+
@wrap_exceptions
|
2055
|
+
def memory_maps(self):
|
2056
|
+
"""Return process's mapped memory regions as a list of named
|
2057
|
+
tuples. Fields are explained in 'man proc'; here is an updated
|
2058
|
+
(Apr 2012) version: http://goo.gl/fmebo.
|
2059
|
+
|
2060
|
+
/proc/{PID}/smaps does not exist on kernels < 2.6.14 or if
|
2061
|
+
CONFIG_MMU kernel configuration option is not enabled.
|
2062
|
+
"""
|
2063
|
+
|
2064
|
+
def get_blocks(lines, current_block):
|
2065
|
+
data = {}
|
2066
|
+
for line in lines:
|
2067
|
+
fields = line.split(None, 5)
|
2068
|
+
if not fields[0].endswith(b':'):
|
2069
|
+
# new block section
|
2070
|
+
yield (current_block.pop(), data)
|
2071
|
+
current_block.append(line)
|
2072
|
+
else:
|
2073
|
+
try:
|
2074
|
+
data[fields[0]] = int(fields[1]) * 1024
|
2075
|
+
except ValueError:
|
2076
|
+
if fields[0].startswith(b'VmFlags:'):
|
2077
|
+
# see issue #369
|
2078
|
+
continue
|
2079
|
+
else:
|
2080
|
+
raise ValueError(
|
2081
|
+
"don't know how to interpret line %r"
|
2082
|
+
% line
|
2083
|
+
)
|
2084
|
+
yield (current_block.pop(), data)
|
2085
|
+
|
2086
|
+
data = self._read_smaps_file()
|
2087
|
+
# Note: smaps file can be empty for certain processes or for
|
2088
|
+
# zombies.
|
2089
|
+
if not data:
|
2090
|
+
self._raise_if_zombie()
|
2091
|
+
return []
|
2092
|
+
lines = data.split(b'\n')
|
2093
|
+
ls = []
|
2094
|
+
first_line = lines.pop(0)
|
2095
|
+
current_block = [first_line]
|
2096
|
+
for header, data in get_blocks(lines, current_block):
|
2097
|
+
hfields = header.split(None, 5)
|
2098
|
+
try:
|
2099
|
+
addr, perms, _offset, _dev, _inode, path = hfields
|
2100
|
+
except ValueError:
|
2101
|
+
addr, perms, _offset, _dev, _inode, path = hfields + ['']
|
2102
|
+
if not path:
|
2103
|
+
path = '[anon]'
|
2104
|
+
else:
|
2105
|
+
if PY3:
|
2106
|
+
path = decode(path)
|
2107
|
+
path = path.strip()
|
2108
|
+
if path.endswith(' (deleted)') and not path_exists_strict(
|
2109
|
+
path
|
2110
|
+
):
|
2111
|
+
path = path[:-10]
|
2112
|
+
item = (
|
2113
|
+
decode(addr),
|
2114
|
+
decode(perms),
|
2115
|
+
path,
|
2116
|
+
data.get(b'Rss:', 0),
|
2117
|
+
data.get(b'Size:', 0),
|
2118
|
+
data.get(b'Pss:', 0),
|
2119
|
+
data.get(b'Shared_Clean:', 0),
|
2120
|
+
data.get(b'Shared_Dirty:', 0),
|
2121
|
+
data.get(b'Private_Clean:', 0),
|
2122
|
+
data.get(b'Private_Dirty:', 0),
|
2123
|
+
data.get(b'Referenced:', 0),
|
2124
|
+
data.get(b'Anonymous:', 0),
|
2125
|
+
data.get(b'Swap:', 0),
|
2126
|
+
)
|
2127
|
+
ls.append(item)
|
2128
|
+
return ls
|
2129
|
+
|
2130
|
+
@wrap_exceptions
|
2131
|
+
def cwd(self):
|
2132
|
+
return readlink("%s/%s/cwd" % (self._procfs_path, self.pid))
|
2133
|
+
|
2134
|
+
@wrap_exceptions
|
2135
|
+
def num_ctx_switches(
|
2136
|
+
self, _ctxsw_re=re.compile(br'ctxt_switches:\t(\d+)')
|
2137
|
+
):
|
2138
|
+
data = self._read_status_file()
|
2139
|
+
ctxsw = _ctxsw_re.findall(data)
|
2140
|
+
if not ctxsw:
|
2141
|
+
raise NotImplementedError(
|
2142
|
+
"'voluntary_ctxt_switches' and 'nonvoluntary_ctxt_switches'"
|
2143
|
+
"lines were not found in %s/%s/status; the kernel is "
|
2144
|
+
"probably older than 2.6.23" % (self._procfs_path, self.pid)
|
2145
|
+
)
|
2146
|
+
else:
|
2147
|
+
return _common.pctxsw(int(ctxsw[0]), int(ctxsw[1]))
|
2148
|
+
|
2149
|
+
@wrap_exceptions
|
2150
|
+
def num_threads(self, _num_threads_re=re.compile(br'Threads:\t(\d+)')):
|
2151
|
+
# Note: on Python 3 using a re is faster than iterating over file
|
2152
|
+
# line by line. On Python 2 is the exact opposite, and iterating
|
2153
|
+
# over a file on Python 3 is slower than on Python 2.
|
2154
|
+
data = self._read_status_file()
|
2155
|
+
return int(_num_threads_re.findall(data)[0])
|
2156
|
+
|
2157
|
+
@wrap_exceptions
|
2158
|
+
def threads(self):
|
2159
|
+
thread_ids = os.listdir("%s/%s/task" % (self._procfs_path, self.pid))
|
2160
|
+
thread_ids.sort()
|
2161
|
+
retlist = []
|
2162
|
+
hit_enoent = False
|
2163
|
+
for thread_id in thread_ids:
|
2164
|
+
fname = "%s/%s/task/%s/stat" % (
|
2165
|
+
self._procfs_path,
|
2166
|
+
self.pid,
|
2167
|
+
thread_id,
|
2168
|
+
)
|
2169
|
+
try:
|
2170
|
+
with open_binary(fname) as f:
|
2171
|
+
st = f.read().strip()
|
2172
|
+
except (FileNotFoundError, ProcessLookupError):
|
2173
|
+
# no such file or directory or no such process;
|
2174
|
+
# it means thread disappeared on us
|
2175
|
+
hit_enoent = True
|
2176
|
+
continue
|
2177
|
+
# ignore the first two values ("pid (exe)")
|
2178
|
+
st = st[st.find(b')') + 2 :]
|
2179
|
+
values = st.split(b' ')
|
2180
|
+
utime = float(values[11]) / CLOCK_TICKS
|
2181
|
+
stime = float(values[12]) / CLOCK_TICKS
|
2182
|
+
ntuple = _common.pthread(int(thread_id), utime, stime)
|
2183
|
+
retlist.append(ntuple)
|
2184
|
+
if hit_enoent:
|
2185
|
+
self._raise_if_not_alive()
|
2186
|
+
return retlist
|
2187
|
+
|
2188
|
+
@wrap_exceptions
|
2189
|
+
def nice_get(self):
|
2190
|
+
# with open_text('%s/%s/stat' % (self._procfs_path, self.pid)) as f:
|
2191
|
+
# data = f.read()
|
2192
|
+
# return int(data.split()[18])
|
2193
|
+
|
2194
|
+
# Use C implementation
|
2195
|
+
return cext_posix.getpriority(self.pid)
|
2196
|
+
|
2197
|
+
@wrap_exceptions
|
2198
|
+
def nice_set(self, value):
|
2199
|
+
return cext_posix.setpriority(self.pid, value)
|
2200
|
+
|
2201
|
+
# starting from CentOS 6.
|
2202
|
+
if HAS_CPU_AFFINITY:
|
2203
|
+
|
2204
|
+
@wrap_exceptions
|
2205
|
+
def cpu_affinity_get(self):
|
2206
|
+
return cext.proc_cpu_affinity_get(self.pid)
|
2207
|
+
|
2208
|
+
def _get_eligible_cpus(
|
2209
|
+
self, _re=re.compile(br"Cpus_allowed_list:\t(\d+)-(\d+)")
|
2210
|
+
):
|
2211
|
+
# See: https://github.com/giampaolo/psutil/issues/956
|
2212
|
+
data = self._read_status_file()
|
2213
|
+
match = _re.findall(data)
|
2214
|
+
if match:
|
2215
|
+
return list(range(int(match[0][0]), int(match[0][1]) + 1))
|
2216
|
+
else:
|
2217
|
+
return list(range(len(per_cpu_times())))
|
2218
|
+
|
2219
|
+
@wrap_exceptions
|
2220
|
+
def cpu_affinity_set(self, cpus):
|
2221
|
+
try:
|
2222
|
+
cext.proc_cpu_affinity_set(self.pid, cpus)
|
2223
|
+
except (OSError, ValueError) as err:
|
2224
|
+
if isinstance(err, ValueError) or err.errno == errno.EINVAL:
|
2225
|
+
eligible_cpus = self._get_eligible_cpus()
|
2226
|
+
all_cpus = tuple(range(len(per_cpu_times())))
|
2227
|
+
for cpu in cpus:
|
2228
|
+
if cpu not in all_cpus:
|
2229
|
+
raise ValueError(
|
2230
|
+
"invalid CPU number %r; choose between %s"
|
2231
|
+
% (cpu, eligible_cpus)
|
2232
|
+
)
|
2233
|
+
if cpu not in eligible_cpus:
|
2234
|
+
raise ValueError(
|
2235
|
+
"CPU number %r is not eligible; choose "
|
2236
|
+
"between %s" % (cpu, eligible_cpus)
|
2237
|
+
)
|
2238
|
+
raise
|
2239
|
+
|
2240
|
+
# only starting from kernel 2.6.13
|
2241
|
+
if HAS_PROC_IO_PRIORITY:
|
2242
|
+
|
2243
|
+
@wrap_exceptions
|
2244
|
+
def ionice_get(self):
|
2245
|
+
ioclass, value = cext.proc_ioprio_get(self.pid)
|
2246
|
+
if enum is not None:
|
2247
|
+
ioclass = IOPriority(ioclass)
|
2248
|
+
return _common.pionice(ioclass, value)
|
2249
|
+
|
2250
|
+
@wrap_exceptions
|
2251
|
+
def ionice_set(self, ioclass, value):
|
2252
|
+
if value is None:
|
2253
|
+
value = 0
|
2254
|
+
if value and ioclass in (IOPRIO_CLASS_IDLE, IOPRIO_CLASS_NONE):
|
2255
|
+
raise ValueError("%r ioclass accepts no value" % ioclass)
|
2256
|
+
if value < 0 or value > 7:
|
2257
|
+
msg = "value not in 0-7 range"
|
2258
|
+
raise ValueError(msg)
|
2259
|
+
return cext.proc_ioprio_set(self.pid, ioclass, value)
|
2260
|
+
|
2261
|
+
if prlimit is not None:
|
2262
|
+
|
2263
|
+
@wrap_exceptions
|
2264
|
+
def rlimit(self, resource_, limits=None):
|
2265
|
+
# If pid is 0 prlimit() applies to the calling process and
|
2266
|
+
# we don't want that. We should never get here though as
|
2267
|
+
# PID 0 is not supported on Linux.
|
2268
|
+
if self.pid == 0:
|
2269
|
+
msg = "can't use prlimit() against PID 0 process"
|
2270
|
+
raise ValueError(msg)
|
2271
|
+
try:
|
2272
|
+
if limits is None:
|
2273
|
+
# get
|
2274
|
+
return prlimit(self.pid, resource_)
|
2275
|
+
else:
|
2276
|
+
# set
|
2277
|
+
if len(limits) != 2:
|
2278
|
+
msg = (
|
2279
|
+
"second argument must be a (soft, hard) "
|
2280
|
+
+ "tuple, got %s" % repr(limits)
|
2281
|
+
)
|
2282
|
+
raise ValueError(msg)
|
2283
|
+
prlimit(self.pid, resource_, limits)
|
2284
|
+
except OSError as err:
|
2285
|
+
if err.errno == errno.ENOSYS:
|
2286
|
+
# I saw this happening on Travis:
|
2287
|
+
# https://travis-ci.org/giampaolo/psutil/jobs/51368273
|
2288
|
+
self._raise_if_zombie()
|
2289
|
+
raise
|
2290
|
+
|
2291
|
+
@wrap_exceptions
|
2292
|
+
def status(self):
|
2293
|
+
letter = self._parse_stat_file()['status']
|
2294
|
+
if PY3:
|
2295
|
+
letter = letter.decode()
|
2296
|
+
# XXX is '?' legit? (we're not supposed to return it anyway)
|
2297
|
+
return PROC_STATUSES.get(letter, '?')
|
2298
|
+
|
2299
|
+
@wrap_exceptions
|
2300
|
+
def open_files(self):
|
2301
|
+
retlist = []
|
2302
|
+
files = os.listdir("%s/%s/fd" % (self._procfs_path, self.pid))
|
2303
|
+
hit_enoent = False
|
2304
|
+
for fd in files:
|
2305
|
+
file = "%s/%s/fd/%s" % (self._procfs_path, self.pid, fd)
|
2306
|
+
try:
|
2307
|
+
path = readlink(file)
|
2308
|
+
except (FileNotFoundError, ProcessLookupError):
|
2309
|
+
# ENOENT == file which is gone in the meantime
|
2310
|
+
hit_enoent = True
|
2311
|
+
continue
|
2312
|
+
except OSError as err:
|
2313
|
+
if err.errno == errno.EINVAL:
|
2314
|
+
# not a link
|
2315
|
+
continue
|
2316
|
+
if err.errno == errno.ENAMETOOLONG:
|
2317
|
+
# file name too long
|
2318
|
+
debug(err)
|
2319
|
+
continue
|
2320
|
+
raise
|
2321
|
+
else:
|
2322
|
+
# If path is not an absolute there's no way to tell
|
2323
|
+
# whether it's a regular file or not, so we skip it.
|
2324
|
+
# A regular file is always supposed to be have an
|
2325
|
+
# absolute path though.
|
2326
|
+
if path.startswith('/') and isfile_strict(path):
|
2327
|
+
# Get file position and flags.
|
2328
|
+
file = "%s/%s/fdinfo/%s" % (
|
2329
|
+
self._procfs_path,
|
2330
|
+
self.pid,
|
2331
|
+
fd,
|
2332
|
+
)
|
2333
|
+
try:
|
2334
|
+
with open_binary(file) as f:
|
2335
|
+
pos = int(f.readline().split()[1])
|
2336
|
+
flags = int(f.readline().split()[1], 8)
|
2337
|
+
except (FileNotFoundError, ProcessLookupError):
|
2338
|
+
# fd gone in the meantime; process may
|
2339
|
+
# still be alive
|
2340
|
+
hit_enoent = True
|
2341
|
+
else:
|
2342
|
+
mode = file_flags_to_mode(flags)
|
2343
|
+
ntuple = popenfile(
|
2344
|
+
path, int(fd), int(pos), mode, flags
|
2345
|
+
)
|
2346
|
+
retlist.append(ntuple)
|
2347
|
+
if hit_enoent:
|
2348
|
+
self._raise_if_not_alive()
|
2349
|
+
return retlist
|
2350
|
+
|
2351
|
+
@wrap_exceptions
|
2352
|
+
def net_connections(self, kind='inet'):
|
2353
|
+
ret = _net_connections.retrieve(kind, self.pid)
|
2354
|
+
self._raise_if_not_alive()
|
2355
|
+
return ret
|
2356
|
+
|
2357
|
+
@wrap_exceptions
|
2358
|
+
def num_fds(self):
|
2359
|
+
return len(os.listdir("%s/%s/fd" % (self._procfs_path, self.pid)))
|
2360
|
+
|
2361
|
+
@wrap_exceptions
|
2362
|
+
def ppid(self):
|
2363
|
+
return int(self._parse_stat_file()['ppid'])
|
2364
|
+
|
2365
|
+
@wrap_exceptions
|
2366
|
+
def uids(self, _uids_re=re.compile(br'Uid:\t(\d+)\t(\d+)\t(\d+)')):
|
2367
|
+
data = self._read_status_file()
|
2368
|
+
real, effective, saved = _uids_re.findall(data)[0]
|
2369
|
+
return _common.puids(int(real), int(effective), int(saved))
|
2370
|
+
|
2371
|
+
@wrap_exceptions
|
2372
|
+
def gids(self, _gids_re=re.compile(br'Gid:\t(\d+)\t(\d+)\t(\d+)')):
|
2373
|
+
data = self._read_status_file()
|
2374
|
+
real, effective, saved = _gids_re.findall(data)[0]
|
2375
|
+
return _common.pgids(int(real), int(effective), int(saved))
|